###排序###
內排序:在排序過程中,若整個表都是放在記憶體中處理,排序是不涉及內外存資料的交換,則稱之為內排序。
外排序:若排序過程中要進行內外存資料的交換,則稱之為外排序。
內排序適用於元素個數不是很多的小表,外排序適用於元素個數很多,不能一次將全部元素放入記憶體的大表。
內排序有:插入排序、交換排序、選擇排序、歸併排序、基數排序。
1、插入排序:每次將乙個待排序的元素,按其關鍵字大小插入到已經排好序的子表的適當位置,直到全部元素插入完成為止。
插入排序:直接插入排序、折半插入排序、希爾排序。
直接插入排序:有兩重迴圈構成,是穩定排序。
折半插入排序:採用折半查詢方法找到插入位置,再通過移動元素進行插入。是穩定排序。
希爾排序:是一種分組插入方法。是不穩定排序。
2、交換排序:兩兩比較待排序元素的關鍵字,發現兩個元素的次序相反即進行交換,直到沒有反序的元素為止。
交換排序:氣泡排序、快速排序。
氣泡排序:整個演算法從最下面的元素開始,對每兩個相鄰的關鍵字進行比較,且是關鍵字小的元素換至關鍵字大的元素之上,使得經過一趟氣泡排序之後,關鍵字最小的元素到達最上端,依次迴圈剩下的無序元素。是穩定排序。
快速排序:在排序的n個元素中仍取乙個元素(通常取第乙個元素)作為基準,比該元素關鍵字小的元素放置在前一部分,比該元素大的元素放置在後一部分,並將該元素排在兩部分中間(歸位)。依次對子表進行遞迴劃分,直至子表的長度為0或1。是不穩定排序。
3、選擇排序:每一趟從待排序的元素中選出最小的元素,順序放在已排好序的子表的最後,直到全部元素排序完畢。適用於從大量的元素中選擇一部分排序元素。
選擇排序:直接選擇排序(簡單選擇排序)、堆排序。
直接選擇排序:從當前無序區中選出關鍵字最小的元素,將它與無序區的第乙個元素交換,得到新的有序區和無序區,依次迴圈。是不穩定排序。
堆排序:不適用於元素數較少的表。是不穩定排序。
4、歸併排序:是多次將兩個或兩個以上的有序表合併成乙個新的有序表。是穩定排序。
5、基數排序:是穩定排序。
各種內排序方法的效能比較:
穩定性口訣:插泡歸基穩,希速選堆否
資料結構及演算法知識(二)
總結 線性結構 線性表 棧 佇列 串 陣列 廣義表 非線性結構 數 二叉樹 哈弗曼樹 帶權路徑長度最小的二叉樹。帶權路徑長度wpl 所有葉子節點的權值 路徑長度 一 並查集 並查集支援查詢乙個元素所屬的集合以及合併兩個元素各自所屬的集合等運算。在這種資料型別中,n個不同的元素被分為若干組,每組是乙個...
資料結構及演算法知識(一)
一 有序表的歸併演算法 思想 在不破壞原有表的情況下 將兩個有序表合併成乙個有序表可以採用二路歸併演算法。分別掃瞄la和lb兩個有序表,當兩個有序表都沒有掃瞄完時迴圈 比較la lb的當前元素,將其中較小的元素放入lc中,再從較小元素所在的有序表中取出下乙個元素。重複這一過程直到la或lb比較完畢,...
資料結構及演算法
總所周知,程式的實質就是 對資料的表示,以及對資料的處理。資料要能被計算機處理,首先必須能夠儲存在計算機的記憶體中,這項任務就是資料的表示,其核心就是資料結構。對乙個實際問題的求解必須滿足實際處理的要求,這項任務就是資料處理,其核心是演算法。有這樣乙個著名公式 是誰提出的有點記不住了 資料結構 演算...