希爾排序:
時間複雜度:平均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,其...