经典Android、Java面试题之希尔排序,结果是升序;希尔排序是在选择排序之上进行优化而产生的。
代码如下:
public static void main(String[] args) {
int[] data = new int[] {11,10,55,79,100,111,45,56,79,90,345,1000};
heerSort(data);
for (int i = 0; i < data.length; i++) {
System.out.println(""+data[i]);
}
}
//希尔排序 升序
public static void heerSort(int[] arr){
int d=arr.length/2;
while(true){
for (int i = 0; i < d; i++) {
for (int j = i; j+d < arr.length; j+=d) {
if (arr[j]>arr[j+d]) {
// int tmp=arr[j];
// arr[j]=arr[j+d];
// arr[j+d]=tmp;
arr[j]^=arr[j+d];
arr[j+d]^=arr[j];
arr[j]^=arr[j+d];
}
}
}
if (d==1) {
break;
}
d--;
}
}