public class shellSort {
/*
* 希爾排序的時間複雜度好的情況下爲O(n),壞的情況下O(n*n)空間複雜度爲O(1)
*
*/
public static void main(String[] args) {
//創建一個數組用於排序
int[]array={1,4,3,2,6,12,10};
array=shell_sort(array);
//打印排序後的數組
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
//希爾排序
public static int [] shell_sort(int []array){
int gap=array.length;
while(true){
gap=gap/2;
//最外層的for循環用於控制一次希爾排序的次數
for(int i=0;i<gap;i++){
//內層的兩個for循環用於根據gap值選成一組的進行排序
for(int j=i+gap;j<array.length;j+=gap){
//temp相當於待插入數據
int temp=array[j];
int k;
for(k=j-gap;k>=0&&array[k]>temp;k-=gap){
array[k+gap]=array[k];
array[k]=temp;
}
}
}
if(gap==1){
break;
}
}
return array;
}
}
希爾排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.