穩定性:
若存在多個關鍵字相同的記錄,經過排序後這些具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的;
若具有相同關鍵字的記錄之間的相對次序發生改變,則稱這種排序方法是不穩定的。
一.插入排序
①.直接插入排序(穩定)
使用直接插入排序,對於具有n個記錄的檔案,要進行n-1趟排序
②.希爾排序(不穩定)
該方法實質上是一種分組插入方法。
一般取d1=n/2,di+1=di/2。如果結果為偶數,則加1,保證di為奇數。
希爾排序是不穩定的,希爾排序的執行時間依賴於增量序列,其平均時間複雜度為o(n^1.3).
二.選擇排序
①.直接選擇排序(不穩定)
直接選擇排序的平均時間複雜度為o(n^2)
②.堆排序(不穩定)
將待排陣列看作乙個完全二叉樹,二叉樹中每個節點都比子節點大(大根堆)/每個節點都比子節點小(小根堆),
然後把根節點和最後乙個節點交換,調整樹的結構,重複操作,完成排序
堆排序的最壞時間複雜度為o(nlgn),堆排序的平均效能較接近於最壞效能。由於建初始堆所需的比較 次數較多,所以堆排序不適宜於記錄較少的檔案。堆排序是就地排序,輔助空間為o(1)三.交換排序
①.氣泡排序(穩定的)
氣泡排序的最壞時間複雜度為o(n^2)
由於它的記錄移動次數較多,故平均效能比直接插入排序要差得多
②.快速排序:(不穩定的)
四.歸併排序
時間複雜度o(nlog2n),空間複雜度o(n)
五.基數排序
基數排序的基本思想是:從低位到高位依次對待排序的關鍵碼進行分配和收集,經過d趟分配和收集,就可以得到乙個有序序列.
常用排序演算法總結
總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...
常用排序演算法總結
常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...
常用排序演算法總結
注 所有排序都是寫的由小到大排序的情況 1.插入排序 1 直接插入排序 穩定 arr sortedindex 1 key 注意這裡的下標 sortedindex 1 2 希爾排序 不穩定 希爾排序好的增量序列的共同特徵 希爾排序演算法 fromid 1801475 type syn 最後乙個增量必須...