期末複習 資料結構 排序(1)

2021-10-01 09:55:39 字數 2008 閱讀 3058

1.排序:將一組「無序」的記錄序列調整為「有序」的記錄序列。

2.內排序和外排序

概念

衡量效率的方法

排序方法

內部排序:插入排序、快速排序、選擇排序、歸併排序、基數排序等

外部排序

3.穩定排序和非穩定排序

穩定性概念:排序前兩個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。

4.直接插入排序:

基本思想:

將乙個記錄插入到已排好序的有序列中,從而得到乙個新的有序序列(將序列的第乙個資料看成是乙個有序的子串行,然後從第二個記錄逐個向該有序的子串行進行有序的插入,直至整個序列有序)

重點思想:使用哨兵,用於臨時儲存和判斷陣列邊界。

基本步驟:

複雜度分析

從空間上看,它只需要乙個輔助空間temp ,因此我們關鍵看它的時間複雜度。

當最好的情況下,也就是序列本身就是有序的 ,比較的次數n-1,移動的次數0,這個時候時間複雜度o(n)

如果排序記錄是隨機的話,那麼根據概率相同的情況原則,平均比較和移動的次數約為(n^2)/4 次,因此我們可以得出直接插入排序法的平均複雜度為o(n^2) 從這裡也可以看出

直接插入排序比氣泡排序和簡單選擇排序效能要好一點,是乙個穩定的排序演算法。

5.希爾排序

基本思想:

使陣列中任意間隔為h的元素都是有序的。

基本步驟:

6.氣泡排序

基本思想:比較兩個相鄰的元素,將值大的元素交換到右邊

具體步驟:依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面。

(1)第一次比較:首先比較第一和第二個數,將小數放在前面,將大數放在後面。

(2)比較第2和第3個數,將小數 放在前面,大數放在後面。

(3)如此繼續,知道比較到最後的兩個數,將小數放在前面,大數放在後面,重複步驟,直至全部排序完成

(4)在上面一趟比較完成後,最後乙個數一定是陣列中最大的乙個數,所以在比較第二趟的時候,最後乙個數是不參加比較的。

(5)在第二趟比較完成後,倒數第二個數也一定是陣列中倒數第二大數,所以在第三趟的比較中,最後兩個數是不參與比較的。

(6)依次類推,每一趟比較次數減少依次

時間複雜度

若檔案的初始狀態是正序的,一趟掃瞄即可完成排序。所需的關鍵字比較次數 和記錄移動次數 均達到最小值: , 。 [1]

所以,氣泡排序最好的時間複雜度為 。

若初始檔案是反序的,需要進行 趟排序。每趟排序要進行 次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值: [1]

氣泡排序的最壞時間複雜度為 。 [1]

綜上,因此氣泡排序總的平均時間複雜度為 。 [

具體演算法

7.快速排序

**基本思想:**就是給基準資料找其正確索引位置的過程。

基本步驟

具體演算法:

時間複雜度

資料結構之排序(期末複習)

知識框架 ps 文末有驚喜 排序是按關鍵字的非遞減或非遞增順序對一組記錄重新進行排列的操作。分類 1 內部排序 待排序記錄全部存放在計算機記憶體中進行排序的過程 2 外部排序 待排序記錄的數量很大,記憶體一次不能容納全部記錄,在排序過程中尚需對外存進行訪問的排序過程 1 插入類 直接插入排序 折半插...

資料結構期末複習

1 基於鄰接表 2struct vertexnode3 7struct edgenode8 12struct vertexnode adjlist 100 13 int visited 100 14 void gs int a,int n,int e 15 22for k 0 k e k 2330 ...

資料結構期末複習(一)

一.判斷題 字串是資料物件特定的線性表 t 乙個無向圖的連通分量是其極大的連通子圖 t 解析位址 假設b是一棵樹,b 是對應的二叉樹。則b的後根遍歷相當於b 的中序遍歷 t 通常,二叉樹的第i層上有2i 1個結點 f 對於一棵m階的b 樹,樹中每個結點至多有m 個關鍵字。除根之外的所有非終端結點至少...