排序算法
排序:整理文件中的記錄,使之按關鍵字遞增(遞減)的次序排列起來
被排序對象-文件
排序運算的依據-關鍵字
1.排序的穩定性
當待排序記錄的關鍵字均不相同時,排序結果是唯一的,否則不唯一
穩定性的前提:待排序的文件中,存在多個關鍵字相同的記錄
經過排序後:
若具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的
若具有相同關鍵字的記錄之間的相對次序發生變化,則是不穩定的
2.排序的分類
按是否涉及數據的內、外存交換,分爲內部排序和外部排序
排序過程中,整個文件都放在內存中處理,排序不涉及數據的內外存交換,,則稱之爲內部排序,否則,稱之爲外部排序
內部排序常用於記錄個數不是很多的小文件
外部排序適用於記錄個數太多、不能一次將其全部放入內存的大文件
3.排序的基本操作
1.比較兩個關鍵字的大小
2.改變指向記錄的指針或者移動記錄本身
第二中操作依賴於待排序記錄的存儲方式。
4.待排文件的常用存儲方式
1.以順序表作爲存儲結構
對記錄本身進行物理重排,即通過關鍵字的比較,將記錄移到合適的位置
2.以鏈表作爲存儲結構
無須移動記錄,僅需修改指針
3.用順序的方式存儲待排序的記錄,但同時建立一個輔助表,比如包括關鍵字和指向記錄位置的指針組成的索引表
只需對輔助表的表目進行物理重排,即只移動輔助表的表目,而不移動記錄本身
5.評價算法的性能指標
1.執行時間和所需的輔助空間
2.算法本身的複雜程度
1.時間複雜度
大多數排序算法的時間開銷主要是關鍵字之間的比較和記錄的移動,有的排序算法其執行時間不僅依賴於問題的規模,還取決於輸入實例中數據的狀態(已排序好或者說反向排序好)
2.空間複雜度
若排序算法所需的輔助空間並不依賴於問題的規模n,即輔助空間爲O(1),則稱之爲就地排序(In-Place),非就地排序要求的輔助空間一般爲O(n)
6.穩定排序和不穩定排序
|
最壞 |
最好 |
平均 |
空間複雜度 |
穩定性 |
冒泡排序 |
O(n2) |
O(n) |
O(n) |
O(1) |
穩定 |
堆排序 |
|
|
|
|
|
插入排序 |
|
|
|
|
|
歸併排序 |
|
|
|
|
|
快速排序 |
|
|
|
|
|
基數排序 |
|
|
|
|
|
選擇排序 |
|
|
|
|
|
希爾排序 |
|
|
|
|
|