希尔排序

来源:互联网 发布:snmp及编程实现 编辑:程序博客网 时间:2024/06/06 16:56
package sort1;public class ShellSort {    /**     * 希尔排序的一趟插入     * @param arr 待排数组     * @param d 增量     */    public static void shellInsert(int[] arr, int d) {        for(int i=d; i<arr.length; i++) {            int j = i - d;            int temp = arr[i];    //记录要插入的数据              while (j>=0 && arr[j]>temp) {  //从后向前,找到比其小的数的位置                   arr[j+d] = arr[j];    //向后挪动                  j -= d;              }              if (j != i - d)    //存在比其小的数                 arr[j+d] = temp;        }    }    public static void shellSort(int[] arr) {        if(arr == null || arr.length == 0)            return ;        int d = arr.length >>2;        while(d >= 1) {            shellInsert(arr, d);            d /= 2;        }    }    public static void main(String[] args) {int a[]={5,7,4,3,1,6};shellSort(a);for(int i:a){System.out.print(i+" ");}}}

0 0
原创粉丝点击