希尔排序是一种特殊的插入排序,以增量分组比较排序,增量直到变为1
package suanfa;
import java.util.Arrays;
//希尔排序,gap为增量。直到增量为1
public class Xier {
public static void main(String[] args) {
int[] arr ={32,52,67,85,77,83,45,84,68,90};
Xier(arr);
System.out.println(Arrays.toString(arr));
}
//交换方法
public static void swap(int[] arr,int i,int j) {
arr[i]=arr[i]^arr[j];
arr[j]=arr[i]^arr[j];
arr[i]=arr[i]^arr[j];
}
public static void Xier(int[] arr) {
for(int gap=arr.length/2;gap>0;gap/=2) {//第一层增量
for(int i=gap;i<arr.length;i++) {//从第一个增量位置向后指向
for(int j =i;j>=gap;j-=gap) {//增量之间的数排序
if(arr[j]<arr[j-gap]) {
swap(arr,j,j-gap);
}else {
break;
}
}
}
}
}
}