基本概念: 1.在排序問題中,通常將數據袁術稱為記錄(record)。 2.排序是將一個記錄的任意序列重新排列成一個按 關鍵碼(排序碼) 有序的序列。 3.正序、逆序。若待排序序列中的記錄已經按關鍵碼排好序,稱此記錄序列為正序,反之若排序序列中記錄的排序序列與排好序的順序正好相反,稱之為逆序。 4. ...
基本概念:
1.在排序問題中,通常將數據袁術稱為記錄(record)。
2.排序是將一個記錄的任意序列重新排列成一個按 關鍵碼(排序碼) 有序的序列。
3.正序、逆序。若待排序序列中的記錄已經按關鍵碼排好序,稱此記錄序列為正序,反之若排序序列中記錄的排序序列與排好序的順序正好相反,稱之為逆序。
4.趟,在排序過程中,將待排序的記錄序列掃描一遍稱之為一趟(pass)。
5.排序演算法的穩定性,假定在待排序的記錄序列中,存在多個具有相同關鍵碼的記錄,經過排序後,這些記錄的相對次序保持不變,則稱這種演算法穩定;否則稱之為不穩定。(是否穩定是由具體演算法決定,不穩定的演算法在某種條件下可能變成穩定的演算法,而穩定的演算法在某種條件下可能變為不穩定的演算法)
6.排序的分類:
1.內排序與外排序:內排序是指在排序的整個過程中,所有待排序的記錄都放置與記憶體中;外排序是指待排序的記錄個數太多,需要將一部分記錄放置在記憶體,另一部分記錄放置到外村,整個排序過程需要在內外之間多次交換數據才能得到排序結果。
2.根據排序方法是否建立在關鍵碼比較的基礎,可以將排序方法分為 基於比較的排序 與 不急於比較的排序:
基於比較:主要通過關鍵碼之間的比較和記錄的移動這兩種操作來實現,大致分為插入排序、交換排序、選擇排序、歸併排序等4類。
不基於比較:根據待排序數據的特點所採取的其他方法,通常沒有大量的關鍵碼之間的比較和記錄的移動操作。
排序演算法的性能:
排序是數據處理中經常執行的一種操作,往往屬於系統的核心部分,因此排序演算法的時間開銷是衡量演算法好壞的重要標誌。
在基於比較的內排序,排序過程中基本由以下兩種操作:1.比較(compare),關鍵碼之間的比較 2.移動(move),記錄從一個位置移動到另一個位置。所以在待排序記錄個數一定的條件下,演算法的執行時間主要消耗在關鍵碼之間的比較和記錄的移動上。因此,高效率的排序演算法應該具有儘可能少的關鍵碼比較次數和儘可能少的記錄移動次數。
評價演算法另一個標準是執行演算法所需要的輔助存儲空間。在待排序記錄個數一定的條件下,除了存放待排序記錄占用的存儲空間之外,執行演算法所需要的其他存儲空間。
另外,演算法本身的複雜程度也是一個要考慮的因素。