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 +da[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));