当前位置: 代码迷 >> 综合 >> java_HeerSort希尔排序
  详细解决方案

java_HeerSort希尔排序

热度:103   发布时间:2023-09-20 11:33:39.0

1.通过衰减成不同的增量进行部分排序移动,6,3,2,1

        int [] a={9, 3, 2, 4, 10, 44, 83, 28, 22, 76, 1,  5,  0,  -1,36, 35, 23};
                //A0,A1,A2,A3,A4, A5, A6, A7, A8, A9, A10,A11,A12,A13
        int d =a.length;
        while(true){
            d=d/2; //默认增量是数组长度一半 this is 6
            for (int i = 0; i < d; i++) {
                //循环时控制 数字下标 j加上增量 小于等于即最后一个数的下标  小于数组的长度   步长是d
                for (int j = 1; j +d<a.length;j+=d) {
                    
                    int tmp;//若下标小的数的值     大于  下标大的数的值    两个数交换swap
                    if (a[j]>a[j+d]) {
                        tmp=a[j];
                        a[j]=a[j+d];
                        a[j+d]=tmp;
                    }
                }
            }
            //增量即步长 d若减到1时就结束while循环
            if (d==1) {
                break;
            }
            d--;
        }
        System.out.println(Arrays.toString(a));

  相关解决方案