希尔排序
它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。
说明
class Ceilpx{
public static void main(String[] args) {
int [] arr = {2,9,3,1,8,3,8};
int [] sort_arr =Xrpx(arr);
for (int c :sort_arr ) {
System.out.print(c+" ");
}
}
public static int [] Xrpx(int [] arr){
int k = arr.length/2;
while(k>=1){
for (int i =0;i<arr.length ;i++ ) {
for (int j = i;j<arr.length ;j+=k ) {
for (int m = j; m > i ;m -= k ) {
if(arr[m-k]>arr[m]){swap(arr,m-k,m);}else{break;}
//否则不交换顺序
}
}
}
k/=2;
}
return arr;
}
public static void swap(int [] arr,int i ,int j){
int temp1 = arr[i];
arr[i] = arr[j];
arr[j] = temp1;
}
}