package com.zxw.test;
import java.util.Arrays;
public class HillSort {
/**
* 希尔排序(Shell’s Sort)在插入排序算法的基础上进行了改进,算法的时间复杂度与前面几种算法相比有较大的改进,
* 但希尔排序是非稳定排序算法。其算法的基本思想是:先将待排记录序列分割成为若干子序列分别进行插入排序,待整个
* 序列中的记录"基本有序"时,再对全体记录进行一次直接插入排序。该算法时间复杂度为O(n log n)。
*/
public static void main(String[] args) {
int[] arrays = new int[]{-2, 5, 12, 16, 6, -9, 4, 0, 11};
/**
* 实现增量的变化
* 第一次for循环,将数组分割为若干子序列,数组/2的规律划分
*/
for (int gap = arrays.length / 2; gap > 0; gap /= 2) {
/**
* 对子序列进行遍历,取出字符
*/
for (int i = gap; i < arrays.length-1; i++) {
/**
* 按照快速排序方式比较排序
*/
for (int j = i - gap; j >= 0; j -= gap) {
if (arrays[j] > arrays[j + gap]) {
int temp = arrays[j];
arrays[j] = arrays[j + gap];
arrays[j + gap] = temp;
}
}
}
}
System.out.println(Arrays.toString(arrays));
}
}
11-18
11-18
05-26
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交