希尔排序

来源:互联网 发布:证大财富淘宝贷容易吗 编辑:程序博客网 时间:2024/06/05 19:14

希尔排序是改良版的直接插入排序,他是先大体排序,最后归结为直接插入排序,是为了在进行直接插入排序之前,将需要较大幅度移动的元素先行移动,减少浪费

public void sort(int []datas)

{

int len=datas.length;

int temp;

    //分组间隔不断缩小,最后变为1,就变成了直接插入排序

for(int i=len/2;i>0;i=i/2)

{

//每一个循环就是一组排序,最后

 for(int j=0;j<len-i;j++)

   {

//每个分组内按照直接插入进行排序

for(int k=j+i;k<len;k=k+i)

{

//负责将有序区大于待插入元素向后移动

for(int m=k;m>=i;m=m-i)

{

temp=datas[m];

//发现元素比带插入元素大,就把他往前移动

if(datas[m]<datas[m-i])

{

    datas[m]=datas[m-i];

 }else

{//当前元素比待插入元素小或者相等

    datas[m]=temp;

     break;

}

}

}

   }

}

}

0 0