标签:bsp 改进 com height dom sts arrays 状态 test
while (h < n / 3) {
h = 3 * h + 1;
}
// 希尔排序(从小到大)
public class TestShellSort {
@Test
public void test() {
// 赋初始值
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
arr[i] = (int) (100 * Math.random());
}
System.out.println("排序之前:\n" + java.util.Arrays.toString(arr) + "\n");
// 进行排序
// 确定本次的增量
int h = 1;
while (h < arr.length / 3) {
h = 3 * h + 1;
}
// 依次按增量进行排序
while (h > 0) {
for (int i = h; i < arr.length; i++) {
// 储存i位置元素
int temp = arr[i];
// 判断当前元素是否需要排
if (arr[i] < arr[i - h]) {
int j = i - h;
// 只要j位置元素大于当前元素 temp,指针就往左移1增量,且j位置元素右移1增量
for (; j >= 0 && arr[j] > temp; j -= h) {
arr[j + h] = arr[j];
}
// 找到第一个比 temp 小的元素或者遍历到了起始位置,把 temp 赋值给这个位置右1个增量位置的元素
arr[j + h] = temp;
}
}
// 下一次的增量
h = (h - 1) / 3;
}
// 输出结果
System.out.println("排序之后:\n" + java.util.Arrays.toString(arr));
}
}
标签:bsp 改进 com height dom sts arrays 状态 test
原文地址:http://www.cnblogs.com/chendifan/p/6768106.html