資料結構+演算法_溫故知新系列_第8章排序
第8章 排序
8.1 概述:
1. 排序的定義:將一組雜亂無章的資料按一定規律順次排列起來。
2. 排序的目的:方便查詢。
3. 內外排序區分:若待排序記錄都在記憶體中,稱為內部排序。若待排序記錄一部分在記憶體,一部分在外存,則稱為外部排序。(外部排序時,要將資料分批調入記憶體來排序,中間結果還要及時放入外存,顯然外部排序要複雜得多)
4 排序演算法好壞的衡量標準:時間效率/空間效率/穩定性
8.2 插入排序
基本思想:
每步將一個待排序的物件,按其關鍵碼大小,插入到前面已經排好序的一組物件的適當位置上,直到物件全部插入為止。(即一邊插入一邊排序,保證子序列中隨時都是排好序的)
插入排序分類:
A: 直接插入排序(基於順序查詢)
排序過程:整個排序過程為n-1趟插入,即先將序列中第1個記錄看成是一個有序子序列,然後從第2個記錄開始,逐個進行插入,直至整個序列有序;
時間O(n)=n^2
空間O(n)=1
穩定性:穩定的排序;
B:折半插入排序(基於折半查詢)
減少了比較的次數,但並未減少移動的次數,平均效能比直接插入排序好;
時間O(n)=n^2
空間O(n)=1
穩定性:穩定的排序;
C: 希爾排序 (基於逐趟縮小增量)
先將整個待排記錄序列分割成若干子序列,分別進行直接插入排序,待整個序列中的記錄“基本有序”時,再對全體記錄進行一次直接插入排序;
時間O(n^(1.3—2)) 想要弄清關鍵詞比較次數和記錄移動次數與增量選擇之間的關係,並給出完整的數學分析,今仍然是數學難題。
空間:O(n)=1
穩定性:不穩定的排序
8.3 交換排序
基本思想:
兩兩比較,如果發生逆序則交換,直到所有記錄都排好序為止;
A: 氣泡排序
基本思想:每趟不斷將記錄兩兩比較,並按“前小後大”規則交換
時間O(n)=n^2
空間O(n)=1
穩定性:穩定的排序
B: 快速排序
基本思想:
任意一個元素(如第一個)為中心,所有比它小的元素都前放,比它大的元素都後放,形成兩個左右子表,對各個子表重新選擇中心元素並依此規則調整,直到子表的元素只有一個元素;
時間O(n)=nlogn
空間O(n)=logn
穩定性:不穩定的排序
8.4 選擇排序
A:直接選擇排序:
基本思想:
每一趟在後面n-i-1箇中宣傳關鍵碼最小的物件,作為有序序列的第i個記錄;
時間O(n)=n^2
空間O(n)=1
穩定性:不穩定的排序
一邊複習,一邊記錄,還有部分內容,未完待續,慢慢補上!!!