内部排序(总结篇)
1. 內部排序與外部排序的區別:
排序過程中涉及的存儲器不同,內部排序所操作的數據都存放于內存;而外部排序所操作的數據量太大以至于不能全部放于內存,會涉及到外存訪問。
2. 內部排序算法的穩定性:
待排序的數據中如果有兩個相等的數據,經過排序算法之后的先后順序依據不變的話,則稱該排序方法是穩定的,否則就是不穩定的。
?
3.內部排序算法的分類:
3.1 按內部排序過程中所需的工作量來區分可分為三類:
(1)?? 簡單的排序方法, 其時間復雜度為n*n
(2)?? 先進的排序方法, 其時間復雜度為nlogn
(3)?? 基數排序,其時間復雜度為d*n
?
3.2 按內部排序過程中所依據的不同原則可分為五類:
(1)插入排序:? 直接插入排序? ?折半插入排序? ? 2-路插入排序? ? ?表插入排序? ? ? 希爾排序
(2)交換排序:? 起泡排序? ? ?快速排序
(3)選擇排序:? 簡單選擇排序? ? 樹形選擇排序? ? ?堆排序
(4)歸并排序:? 2-路歸并排序??
(5)基數排序:? ?鏈式基數排序
?
下表是各內部排序方法的總覽:
?
3.3
另外,對于單個記錄所占空間太大時,排序過程中不合適直接進行記錄間的交換,而有些內部排序方法如堆排序、快速排序,無法像表插入排序、鏈式基數排序那樣,以修改指針代替記錄移動,這種情況下,可以另設一個地址向量,當移動和比較記錄時,利用地址向量中的值實現,與此方法相關的算法見 地址排序(重排算法)
?
3.4?最后,探討下,”內部排序可能達到的最快速度?”
? 上述討論的排序方法(除基數排序外),都是基于“關鍵字間的比較”實現的,這類操作可以用一個判定樹描述,利用二叉樹相關的基礎性質知,借助于“比較”進行排序的算法在最壞情況下能達到的最好的時間復雜度就是nlog2n
轉載于:https://www.cnblogs.com/aimmiao/p/9346410.html
總結
- 上一篇: 牛客网 暑期ACM多校训练营(第一场)J
- 下一篇: 数据库基础之一--DDL(数据库定义语言