希尔排序实现

来源:互联网 发布:it认证培训机构 编辑:程序博客网 时间:2024/04/29 01:56

定义交换函数

private static void swap(int[] arr, int i, int j) {        if(i == j) return;        arr[i] = arr[i] ^ arr[j];        arr[j] = arr[i] ^ arr[j];        arr[i] = arr[i] ^ arr[j];}

希尔排序
插入排序变种。
不像插入排序,一个一个插,希尔排序有跳跃性。相隔一定增量插入排序,效率更高。
关键在于选定跳跃值,此处跳跃值选择原则是逐渐除2。

代码:

public void shellSort(int[] arr){    for(int h = arr.length/2; h >= 1; h/=2){        for(int i = h; i < arr.length; i++){            for(int j = i; j-h >= 0; j-=h){                if(arr[j-h] > arr[j]) swap(arr, j, j-h);                else break;            }        }    }}
0 0