排序的基本概念

2022-01-14 16:36:57 字數 1473 閱讀 6202

>排序是資料結構的一種重要運算。

>

本章的5.1節至5.6節介紹內排序的各種方法,5.7節介紹外排序方法。

此外,堆排序也是一種典型的選擇排序,有關堆排序的演算法將在第8章中介紹。

#5.1基本概念

>  在討論排序的概念之前,首先引入**排序碼**的概念。

排序碼是結點中的乙個或多個字段,其值作為排序運算中的依據。

排序碼可以是關鍵碼,這時的排序是按關鍵碼對檔案進行排序的;

排序碼也可以不是關鍵碼,這時可能有多個結點的排序碼具有相同的值,因而排序結果可能不唯一。

排序碼的資料型別既可以是正數,也可以是實數或字串,甚至是複雜的組合資料型別。

>  按照一般習慣,在排序中**將結點稱為記錄,將一系列結點構成的線性表稱為檔案**。在本書中後續涉及排序時,都會使用記錄和檔案這兩個概念,讀者應將它們和外存中的記錄和檔案等概念加以區別。

>  排序(sorting)又稱為分類。假定檔案中有n個記錄,每個記錄有乙個排序碼ki,是相應的排序碼的集合。**排序運算就是將上述檔案中的記錄按排序碼非遞減(或非遞增)的次序排列成有序序列**。

>  在各種待排序的檔案中,由於記錄的大小和數量不等,有的檔案記錄本身較大且數量很多,有的檔案記錄本身較小且數量較少。對於較小的檔案,可以一次將檔案全部調入記憶體進行排序處理;而對於很大的檔案,無法將其一次全部調入記憶體進行排序處理,因而在排序過程中會涉及內外存之間的資料交換。在排序過程,檔案全部放在記憶體處理的排序演算法稱為「**內排序**」;在排序過程中,不僅需要使用記憶體,而且還要使用外存的排序演算法稱為「**外排序**」。按照所採用的策略的不同,排序方法可以分為**5**種型別:**插入排序、選擇排序、交換排序、分配排序、歸併排序和外排序**。當然,由於關注的重點不同,乙個具體的排序演算法既可以看成是這一種,也可以看成是那一種。也就是說,乙個具體的排序演算法究竟應該屬於上述5種型別中的哪一種,答案並不是唯一的。

>  在待排序的檔案中,可能存在著多個具有相同排序碼的記錄。對於乙個排序演算法,如果任意具有相同排序碼的多個記錄在排序之後,這些記錄的相對次數仍然保持不變,則稱該排序演算法為「**穩定的**」;否則稱該排序演算法為「**不穩定的**」。排序的方法很多,就其效能而言,很難說哪種演算法最好。每種演算法都有各自的優缺點,適合於不同的應用領域。

>  有兩個評價排序演算法的重要指標,乙個是演算法執行時所需的**時間**,另乙個是演算法執行時所需的**記憶體空間**。其中,**時間開銷是衡量乙個排序演算法好壞的最重要的效能指標**。為了便於分析,排序演算法的時間開銷通常用演算法執行中的比較次數和記錄移動次數來表示。許多排序演算法執行排序時所耗費的時間不僅與演算法本身有關,而且與待排序檔案的記錄順序有關,可以採用最大執行時間和平均執行時間來衡量這些排序演算法的效能。

>  為了便於討論,假定排序要求都是按非遞減序進行排序的。

>  本章後續各節將分別討論插入排序、交換排序、分配排序、歸併排序和外排序,給出典型排序演算法的物件導向的具體實現描述。同時,對主要排序演算法的效能進行必要的分析和討論。執行排序演算法所需的空間量一般都不大,對演算法效能好壞的影響並不大,我們只給出結果,而不加以討論。

排序 排序的基本概念

1,排序的一般定義 1,排序是計算機內經常進行的一種操作,其目的是將一組 無序 的資料元素調整為 有序 的資料元素 2,無序到有序就是排序 2,排序的數學定義 1,假設含 n 個資料元素序列為,其相應的關鍵字序列為 這些關鍵字相互之間可以進行比較,即 在它們之間存在著這樣乙個關係 kp1 kp2 k...

排序的基本概念

排序是資料結構的一種重要運算。本章的5.1節至5.6節介紹內排序的各種方法,5.7節介紹外排序方法。此外,堆排序也是一種典型的選擇排序,有關堆排序的演算法將在第8章中介紹。5.1基本概念 在討論排序的概念之前,首先引入 排序碼 的概念。排序碼是結點中的乙個或多個字段,其值作為排序運算中的依據。排序碼...

排序的基本概念

排序 給定一組記錄的集合,其相應的關鍵碼分別為,排序是將這些記錄排列成順序為的乙個序列,使得相應的關鍵碼滿足ks1 ks2 ksn 稱為公升序 或ks1 ks2 ksn 稱為降序 正序 待排序序列中的記錄已按關鍵碼排好序。逆序 反序 待排序序列中記錄的排列順序與排好序的順序正好相反。趟 在排序過程中...