一、內部排序:是乙個逐步擴大記錄有序序列長度的過程
其中,希爾排序不穩定
1.直接插入排序:o(n*n)、o(1)
基於順序查詢的排序方法
將乙個記錄插入乙個已經排好序的有序表l中,從而得到乙個新的、記錄數增加1的有序表
特點是:從2開始乙個個判斷是否比前乙個元素要大,如果比前面的小的話就要以0單元為哨兵,從該元素的前乙個位置往前查詢,比它大的元素後移一位,直到找到比它小的元素,
此時這個比它小的元素的後一位的位置就是這個哨兵元素應該呆的地方啦。
平均情況下,直接插入排序的時間複雜度為o(n2)。 直接插入排序僅需要乙個記錄的附加空間。所以空間複雜度為o(1).
2.折半插入排序:o(n*n)
3.希爾排序:不穩定的排序方法!!!
將記錄序列分成若干子串行,分別對每個子串行進行插入排序。
且必須保證最後一次排序的增量d等於1,即對整個序列進行一次插入排序。
二、 快速排序:
其中,快速排序不穩定
1.起泡排序:o(n*n)
2.快速排序:不穩定的排序方法!!! o(nlogn)
每次都將最前面的那個元素當成是關鍵字進行排序。
設定low和high輔助比較和對換
首先對無序的記錄序列進行「一次快速排序」,之後分別對分割所得兩個子串行「遞迴」進行快速排序。
時間複雜度分析:
若待排記錄的初始狀態為按關鍵字有序時,快速排序將蛻化為起泡排序,其時間複雜度為o(n2)。
三、選擇排序
1.簡單選擇排序:o(n*n)
分析比較次數:
2.樹型選擇排序:o(nlogn)
首先對n個記錄的關鍵字進行兩兩比較,然後在其中「n/2]個較小者之間再進行兩兩比較,如此重複,直至選出最小關鍵字的記錄為止。
分析空間:
該方法占用空間較多,除需輸出排序結果的n個單元外,尚需n-1個輔助單元。
3.堆排序:是不穩定的排序方法!!!o(nlogn)
四、歸併排序
就是將兩個或兩個以上的有序表結合成乙個新的有序表。
五、基數排列
1.多關鍵字的排列
分為msd和lsd
前者是最高位優先行排列,需要分子序列
後者是最低位優先法,不需要進行子串行分配,而是直接對每個關鍵字都是整個序列參加排序
當對多關鍵字的記錄序列進行lsd方法排序時,必須採用穩定的排序方法。
2.鏈式基數排列
總結:各種排序方法的分析
時間效能:
1.平均的時間效能
o(n*n)的稱為簡單排序方法,o(nlogn)的稱為高效排序方法,o(dn)的稱為基數排序方法
2.當待排序列關於關鍵字有序時:
3.空間效能:(指的是所需要的輔助空間大小)
不穩定排序:
快速排序、希爾排序、堆排序
:三個都是不穩定排序方法
資料結構 第十章 排序作業
1 若表r在排序前已按鍵值遞增順序排列,則 演算法的比較次數最少。a 直接插入排序 b 快速排序 c 歸併排序 d 選擇排序 2 對各種內部排序方法來說,a 快速排序時間效能最佳 b 歸併排序是穩定的排序方法 c 快速排序是一種選擇排序 d 堆排序所用的輔助空間比較大 3.排序演算法的穩定性是指 a...
資料結構(嚴蔚敏)第十章 內部排序
直接插入 左邊有序,右邊無序,從右邊取數依次插入有序中 void insertsort int list,int len list j temp 折半插入 插入點採用折半查詢的方式 void insertsort2 int list,int len for int j i 1 j low j lis...
資料結構 第十章 內部排序之插入排序
ps 後面的元素的數值比前面的元素的小就插入 1.直接插入排序 include define maxsize 20 定義乙個順序表最大長度為20 define lh a,b a b 定義lh a,b 就是afor i 2 i l.length i 從第二個元素開始和前面的元素比較 int main ...