排序(sort)或分類
所謂排序,就是要整理檔案中的記錄,使之按關鍵字遞增(或遞減)次序排列起來。其確切定義如下:
輸入:n個記錄r1,r2,…,rn,其相應的關鍵字分別為k1,k2,…,kn。
輸出:ril,ri2,…,rin,使得ki1≤ki2≤…≤kin。(或ki1≥ki2≥…≥kin)。
1.被排序物件--檔案
被排序的物件--檔案由一組記錄組成。
記錄則由若干個資料項(或域)組成。其中有一項可用來標識乙個記錄,稱為關鍵字項。該資料項的值稱為關鍵字(key)。
注意:在不易產生混淆時,將關鍵字項簡稱為關鍵字。
2.排序運算的依據--關鍵字
用來作排序運算依據的關鍵字,可以是數字型別,也可以是字元型別。
關鍵字的選取應根據問題的要求而定。
【例】在高考成績統計中將每個考生作為乙個記錄。每條記錄包含准考證號、姓名、各科的分數和總分數等項內容。若要惟一地標識乙個考生的記錄,則必須用"准考證號"作為關鍵字。若要按照考生的總分數排名次,則需用"總分數"作為關鍵字。
排序的穩定性
當待排序記錄的關鍵字均不相同時,排序結果是惟一的,否則排序結果不唯一。
在待排序的檔案中,若存在多個關鍵字相同的記錄,經過排序後這些具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的;若具有相同關鍵字的記錄之間的相對次序發生變化,則稱這種排序方法是不穩定的。
注意:排序演算法的穩定性是針對所有輸入例項而言的。即在所有可能的輸入例項中,只要有乙個例項使得演算法不滿足穩定性要求,則該排序演算法就是不穩定的。
排序方法的分類
1.按是否涉及資料的內、外存交換分
在排序過程中,若整個檔案都是放在記憶體中處理,排序時不涉及資料的內、外存交換,則稱之為內部排序(簡稱內排序);反之,若排序過程中要進行資料的內、外存交換,則稱之為外部排序。
注意:① 內排序適用於記錄個數不很多的小檔案
② 外排序則適用於記錄個數太多,不能一次將其全部記錄放人記憶體的大檔案。
2.按策略劃分內部排序方法
可以分為五類:插入排序、選擇排序、交換排序、歸併排序和分配排序。
排序演算法分析
1.排序演算法的基本操作
大多數排序演算法都有兩個基本的操作:
(1) 比較兩個關鍵字的大小;
(2) 改變指向記錄的指標或移動記錄本身。
注意:第(2)種基本操作的實現依賴於待排序記錄的儲存方式。
2.待排檔案的常用儲存方式
(1) 以順序表(或直接用向量)作為儲存結構
排序過程:對記錄本身進行物理重排(即通過關鍵字之間的比較判定,將記錄移到合適的位置)
(2) 以鍊錶作為儲存結構
排序過程:無須移動記錄,僅需修改指標。通常將這類排序稱為鍊錶(或鏈式)排序;
(3) 用順序的方式儲存待排序的記錄,但同時建立乙個輔助表(如包括關鍵字和指向記錄位置的指標組成的索引表)
排序過程:只需對輔助表的表目進行物理重排(即只移動輔助表的表目,而不移動記錄本身)。適用於難於在鍊錶上實現,仍需避免排序過程中移動記錄的排序方法。
3.排序演算法效能評價
(1) 評價排序演算法好壞的標準
評價排序演算法好壞的標準主要有兩條:
① 執行時間和所需的輔助空間
② 演算法本身的複雜程度
(2) 排序演算法的空間複雜度
若排序演算法所需的輔助空間並不依賴於問題的規模n,即輔助空間是o(1),則稱之為就地排序(in-placesou)。
非就地排序一般要求的輔助空間為o(n)。
(3) 排序演算法的時間開銷
大多數排序演算法的時間開銷主要是關鍵字之間的比較和記錄的移動。有的排序演算法其執行時間不僅依賴於問題的規模,還取決於輸入例項中資料的狀態。
檔案的順序儲存結構表示
注意:若關鍵字型別沒有比較算符,則可事先定義巨集或函式來表示比較運算。
【例】關鍵字為字串時,可定義巨集"#define lt(a,b)(stromp((a),(b))<0)"。那麼演算法中"a
72 排序的基本概念
所謂排序就是整理 表 中的記錄,使之按關鍵字遞增 或遞減 有序排列。假設含n個資料元素的序列為,其相應的關鍵字分別為這些關鍵字相互之間可以進行比較,即在它們之間存在著這樣乙個關係 kp1 kp2 kpn,使得序列成為乙個按關鍵字有序的序列,這樣的操作就稱為排序。來看乙個例子 圖1 排序 假設現在有一...
09 排序1 排序
09 排序1 排序 25 分 給定n 個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 include include includeusing namespace std const int cutoff 1000...
09 排序1 排序
n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。資料2 11個不相同的整數,測試基本正確性 資料3 10 3個隨機整數 資料4 10 4個隨機整數 資料5 10 5個隨機整數 資料6 10 5個順序整數 資料7 10 5個逆序整數 資料8 10 5個基本有序的整數 資料9 10 5個隨機正...