希爾排序

希爾排序是改良版的直接插入排序,他是先大體排序,最後歸結爲直接插入排序,是爲了在進行直接插入排序之前,將需要較大幅度移動的元素先行移動,減少浪費

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;

}

}

}

   }

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章