希尔排序
来源:互联网 发布:如何出售域名 编辑:程序博客网 时间:2024/04/28 12:10
/** * 希尔排序(最小增量排序) * 把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。 随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录, 则完成排序 */ public static void shellSort() { int[] arrays = {4,2,5,3,7,1,8,2}; int gap = (int) Math.ceil(arrays.length/2); //增量 while (1 <= gap) { //把距离为gap的元素编为一个组,扫描所有的组 for(int i = gap; i < arrays.length; i++) { int temp =arrays[i]; int j = i - gap; //对距离为gap的元素进行直接插入排序。 for( ; j >= 0 && arrays[j] > temp; j -= gap) { arrays[j+gap] = arrays[j]; } arrays[j+gap] = temp; } gap = gap/2; } for (int a : arrays) { System.out.print(a+" "); } }
0 0