希尔排序

来源:互联网 发布:ubuntu u盘安装 编辑:程序博客网 时间:2024/06/16 07:22

思想:建立于插入排序方法上,解决插入排序多次移动的问题:

package d08希尔排序;public class ShellSort {    //排序方法    public static void sort(int [] arr){        //初始化一个间隔        int h = 1;        //计算最大间隔        while(h<arr.length/3 ){            h=h*3+1;        }        while(h>0){            //进行插入排序             int tmp = 0;             for(int i = h;i<arr.length;i++){   //与前面比较                 tmp = arr[i];                     int j=i;                 while(j>h-1&&arr[j-h]>=tmp){                     arr[j]=arr[j-h];     //比tmp大的全部右移                     j-=h;                                 }                 arr[j]=tmp;        }            //减小间隔            h=(h-1)/3;        }    }}
原创粉丝点击