1,排序的一般定義:
1,排序是計算機內經常進行的一種操作,其目的是將一組「無序」的資料元素調整為「有序」的資料元素;
2,無序到有序就是排序;
2,排序的數學定義:
1,假設含 n 個資料元素序列為, 其相應的關鍵字序列為 ,這些關鍵字相互之間可以進行比較,即:在它們之間存在著這樣乙個關係 kp1 <= kp2 <= ... <= kpn, 按此固有關係將上式記錄序列重新排列為 的操作稱為排序。
3,排序的穩定性:
1,如果在序列中有兩個資料元素 r[i] 和 r[j],它們的關鍵字 k[i] == k[j],且在排序之前,物件 r[i] 排在 r[j] 前面;如果在排序之後,物件 r[i] 仍在物件 r[j] 的前面,則稱這個排序方法是穩定的,否則稱這個排序方法是不穩定的;
4,多關鍵字排序:
1,排序時需要比較的關鍵字多於乙個:
1,排序結果首先按關鍵字 1 進行排序;
2,當關鍵字 1 相同時按關鍵字 2 進行排序;
3,當關鍵字 n - 1 相同時按關鍵字 n 進行排序;
(4),關鍵字之間有優先順序;
5,多關鍵字排序是否比單關鍵字排序更複雜?
1,對於多關鍵字排序,只需要在比較操作時同時考慮多個關鍵字即可;
2,只要定義好了大小關係,就排序演算法而言,多關鍵字排序和單關鍵字排序本質沒有任何差異;
3,後續課程只考慮單關鍵字排序;
6,多關鍵字比較的**實現:
1,利用短路原則;
7,排序中的關鍵操作:
1,比較:
1,任意兩個資料元素通過比較操作確定先後次序;
2,交換:
1,資料元素之間需要交換才能得到預期效果(無序變有序);
8,排序的審判:
1,時間效能:
1,關鍵效能差異體現在比較和交換的數量;
2,輔助儲存空間:
1,為完成排序操作需要的額外的儲存空間:
1,嵌入式開發,空間資源受限;
2,必要時可以「空間換時間」;
3,演算法的實現複雜性:
1,過於複雜的排序法可能影響可讀性和可維護性;
9,dtlib 中的排序類設計:
1,定義排序類,類中實現常用的各種各樣排序方法,專案中直接只用類的成員函式就可以排序;
2,排序類繼承自 object;
3,建構函式、拷貝建構函式以及賦值操作符全部定義為私有的,排序類不可能有物件;
4,將不同排序方法實現為類的靜態成員函式來使用;
10,小結:
1,排序是資料元素從無序到有序的過程;
2,排序具有穩定性,是選擇排序演算法的(主要)因素之一;
3,比較和交換是排序的基本操作;
4,多關鍵字排序與單關鍵字排序無本質區別;
1,比較沒本質區別,所以排序也沒本質區別;
5,排序的時間效能是區分排序演算法好壞的主要因素;
排序的基本概念
排序是資料結構的一種重要運算。本章的5.1節至5.6節介紹內排序的各種方法,5.7節介紹外排序方法。此外,堆排序也是一種典型的選擇排序,有關堆排序的演算法將在第8章中介紹。5.1基本概念 在討論排序的概念之前,首先引入 排序碼 的概念。排序碼是結點中的乙個或多個字段,其值作為排序運算中的依據。排序碼...
排序的基本概念
排序 給定一組記錄的集合,其相應的關鍵碼分別為,排序是將這些記錄排列成順序為的乙個序列,使得相應的關鍵碼滿足ks1 ks2 ksn 稱為公升序 或ks1 ks2 ksn 稱為降序 正序 待排序序列中的記錄已按關鍵碼排好序。逆序 反序 待排序序列中記錄的排列順序與排好序的順序正好相反。趟 在排序過程中...
排序的基本概念
排序是資料結構的一種重要運算。本章的5.1節至5.6節介紹內排序的各種方法,5.7節介紹外排序方法。此外,堆排序也是一種典型的選擇排序,有關堆排序的演算法將在第8章中介紹。5.1基本概念 在討論排序的概念之前,首先引入 排序碼 的概念。排序碼是結點中的乙個或多個字段,其值作為排序運算中的依據。排序碼...