資料結構 筆記:排序的基本概念
阿新 • • 發佈:2018-11-14
排序的一般定義
-排序是計算機內經常進行的一種操作,其目的是將一組“無序”的資料元素調整為“有序”的資料元素
排序的數學定義
假設含n個數據元素的序列為:{R1,R2,....,Rn},其相應的關鍵字序列為:{K1,K2,...,Kn};
這些關鍵字相互之間可以進行比較,即:在它們之間存在著這樣一個關係:Kp1≤Kp2≤Kp3...≤Kpn
按此固有㽑將上式記錄序列重新排列為:{Rp1,Rp2,...,Rpn} 的操作成為排序。
排序的穩定性
-如果在序列中有兩個資料元素r[i]和r[j],它們的關鍵字k[i] == k[j] ,且在排序之前,物件r[i]排在r[j]前面;
如果在排序之後,物件r[j]仍在物件r[i]的前面,則稱這個排序方法是穩定的,輔助稱這個排序方法是不
穩定的。
多關鍵字排序
-排序時需要比較的關鍵字多餘一個
·排序結果首先按關鍵字1進行排序
·當關鍵字1相同時按關鍵字2進行排序
·........
·當關鍵字n-1相同時按關鍵字n進行排序
排序中的關鍵操作
-比較
·任意兩個資料元素通過比較操作確定先後次序
-交換
·資料元素之間需要交換才能得到預期結果
排序的審判
-時間效能
·關鍵效能差異體現比較和交換的數量
-輔助儲存空間
·為完成排序操作需要的額外的儲存空間
·必要時可以“空間換時間”
-演算法的實現複雜性
·過於複雜的排序法可能影響可讀性和可維護性
排序類設計
class Sort :public Object { private: Sort(); Sort(const Sort&); Sort& operator= (const Sort&); template<typename T> static void Swap(T& a,T& b) { T c(a); a = b; b = c; } public: // ...... }
總結:
-排序是資料元素從無序到有序的過程
-排序具有穩定性,是選擇排序演算法的因素之一
-比較交換是排序的基本操作
-多關鍵字排序與單關鍵字排序無本質區別
-排序的事件效能是區分排序演算法好壞的主要因素