菜雞筆記之 希爾排序

2021-10-07 08:35:40 字數 762 閱讀 3184

希爾排序:

時間複雜度:平均o(nlogn);

穩定性:不穩定排序;

思路:將資料分組,每相隔step(步長),對每一組進行插入排序。希爾排序為插入排序的進一步優化;

**實現(希爾排序):

# include

# include

intmain

(void

)//輸入陣列

for(

int i =

0;i)//排序

void

shellsort

(int*,

int)

;shellsort

(array,n)

;//輸出

for(

int i =

0;i)free

(array)

;return0;

}void

shellsort

(int

* array,

int len)

//希爾排序(公升序)

*(array+j+step)

= temp;

//把前面的數用temp填補上}}

}

for (j = i-step;(j>=0)&&(temp<*(array+j));j-=step)迴圈之後的一步為什麼是 *(array+j+step) = temp,不是 *(array+j) = temp?

迴圈最後一步j-=step了。

菜雞筆記之 桶排序

桶排序 桶排序可以理解為簡化版的計數排序,自然地限制條件就更多,適用範圍更窄,原理跟計數排序類似,而且比較簡單 桶排序大概比較適合於元素為正整數,且最大值不太大地情形,而計數排序還適用於整數 可含負整數 跨度不太大的情形,兩者都不適用於字串排序。時間複雜度 o n k 實現 桶排序 include ...

菜雞筆記之 歸併排序

歸併排序 將資料一步步細分,對每一部分進行排序,在將各個部分合起來排序 實現 歸併排序 include include include intmain void 輸入 for int i 0 i 排序 void mergesort int int,int,int void merge int int...

菜雞筆記之 計數排序

計數排序 計數排序是非比較排序,它是分布排序,其時間複雜度可以突破nlogn達到o n 但是其適用範圍相對較小,不適合字串比較,不適合資料跨度較大的陣列的排序。時間複雜度 o n 穩定性 穩定排序 思路 1 開乙個與原始陣列一樣大的陣列result,用於排序後儲存結果 2 開乙個臨時陣列temp,其...