希尔排序

来源:互联网 发布:如何出售域名 编辑:程序博客网 时间: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
原创粉丝点击