排序:給定一組記錄的集合,其相應的關鍵碼分別為,排序是將這些記錄排列成順序為的乙個序列,使得相應的關鍵碼滿足ks1≤ks2≤……≤ksn(稱為公升序)或ks1≥ks2≥……≥ksn(稱為降序)。
正序:待排序序列中的記錄已按關鍵碼排好序。
逆序(反序):待排序序列中記錄的排列順序與排好序的順序正好相反。
趟:在排序過程中,將待排序的記錄序列掃瞄一遍稱為一趟。 通常,一次排序過程需要進行多趟掃瞄才能完成
排序演算法的穩定性: 假定在待排序的記錄集中,存在多個具有相同鍵值的記錄, 若經過排序,這些記錄的相對次序仍然保持不變, 即在原序列中,ki=kj且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。
對於不穩定的排序演算法,只要舉出乙個例項,即可說明它的不穩定性; 而對於穩定的排序演算法,必須對演算法進行分析從而證明穩定的特性。
需要注意的是,排序演算法是否為穩定的是由具體演算法決定的。 不穩定的演算法在某種條件下可以變為穩定的演算法, 而穩定的演算法在某種條件下也可以變為不穩定的演算法。
演算法的穩定性與演算法的具體實現有關
氣泡排序是穩定的排序方法
5,3,3,4
如果規則是 a[i]>a[i+1],則是穩定,如果規則是a[i]>=a[i+1],則是不穩定的排序方法。
快速排序原本是不穩定的排序方法, 但若待排序記錄中只有一組具有相同關鍵碼的記錄,而選擇的軸值恰好是這組相同關鍵碼中的乙個,此時的快速排序就是穩定的。
排序的分類-根據排序資料在記憶體中還是在外存中:
1、內排序:在排序的整個過程中,待排序的所有記錄全部被放置在記憶體中
2、外排序:由於待排序的記錄個數太多,不能同時放置在記憶體,而需要將一部分記錄放置在記憶體,另一部分記錄放置在外存上,整個排序過程需要在內外存之間多次交換資料才能得到排序的結果。
排序的分類-根據排序過程中所進行的基本操作分:
1、基於比較:基本操作——關鍵碼的比較和記錄的移動,其最差時間下限已經被證明為o(nlog2n)。
2、不基於比較:根據關鍵碼的分布特徵。比如,桶式排序,基數排序(多關鍵字排序)
基於比較的內排序:
1、插入排序 2、交換排序 3、選擇排序 4、歸併排序
不基於比較的內排序:
1、分配排序 2、桶式排序 3、基數排序
排序演算法的效能
1、時間複雜性:基本操作。
內排序在排序過程中的基本操作:
⑴比較:關鍵碼之間的比較;
⑵移動:記錄從乙個位置移動到另乙個位置。
2、空間複雜性: 輔助儲存空間。
輔助儲存空間是指在資料規模一定的條件下,除了存放待排序記錄占用的儲存空間之外,執行演算法所需要的其他儲存空間。
排序演算法的儲存結構
從操作角度看,排序是線性結構的一種操作,待排序記錄可以用順序儲存結構或鏈結儲存結構儲存。
排序 排序的基本概念
1,排序的一般定義 1,排序是計算機內經常進行的一種操作,其目的是將一組 無序 的資料元素調整為 有序 的資料元素 2,無序到有序就是排序 2,排序的數學定義 1,假設含 n 個資料元素序列為,其相應的關鍵字序列為 這些關鍵字相互之間可以進行比較,即 在它們之間存在著這樣乙個關係 kp1 kp2 k...
排序的基本概念
排序是資料結構的一種重要運算。本章的5.1節至5.6節介紹內排序的各種方法,5.7節介紹外排序方法。此外,堆排序也是一種典型的選擇排序,有關堆排序的演算法將在第8章中介紹。5.1基本概念 在討論排序的概念之前,首先引入 排序碼 的概念。排序碼是結點中的乙個或多個字段,其值作為排序運算中的依據。排序碼...
排序的基本概念
排序 給定一組記錄的集合,其相應的關鍵碼分別為,排序是將這些記錄排列成順序為的乙個序列,使得相應的關鍵碼滿足ks1 ks2 ksn 稱為公升序 或ks1 ks2 ksn 稱為降序 正序 待排序序列中的記錄已按關鍵碼排好序。逆序 反序 待排序序列中記錄的排列順序與排好序的順序正好相反。趟 在排序過程中...