資料結構 7 1 7 3知識點 排序 查詢

2021-10-07 18:06:41 字數 2335 閱讀 4538

排序

一種重要操作,將資料元素(記錄)的任意序列,排列成按關鍵字有序的序列。

待排序記錄數量不同,將排序方法分為內部排序、外部排序

內部排序分類:插入排序、交換排序、選擇排序、歸併排序、計數排序

插入排序

直接插入排序

演算法思想:

將待排序的記錄ri,插入到已排好序的記錄表r1, r2 ,…., ri-1中,得到乙個新的、記錄數增加1的有序表。 直到所有的記錄都插入完為止。

排序過程演示

演算法實現

演算法分析

空間複雜度:o(1)

時間複雜度:

在最好的情況下(待排序記錄已經有序,即正序),此時每次迴圈中只需要比較關鍵字,次數為n-1次,而不需要移動元素

在最壞的情況下(待排序記錄逆序),比較次數和移動元素的次數均達最大值,約為n*n(n-1)

插入排序的時間複雜度為o(n2)

希爾排序

又稱「縮小增量排序」,對直接插入排序進行改進的方法

基本思想:將整個待排序列分割成若干子串行分別進行直接插入排序,最後在全體進行排序。

希爾排序演示

希爾排序是將相隔的某個增量的記錄組成乙個子串行,每次完成後增量減半

快速排序

藉以交換進行的排序----起泡排序

快速排序是對起泡排序的改進

基本思想:通過一趟排序將記錄分割兩部分,其中一部分記錄的關鍵字比另一部分小,分別進行排序。

快速排序示例

快速排序演算法

結合此演算法加深理解

void quicksort(int a ,int low,int high)

a[i]=m;

if(low選擇排序

基本思想:

每趟在n-i+1個記錄中選取最小關鍵字記錄做有序列的第i個記錄

包括簡單選擇排序、樹形選擇、堆排序

堆排序:只需乙個記錄大小的輔助空間

堆排序演示

最小堆(從小到大排)、最大堆(從大到小排)的建堆過程即自堆頂到葉子的調整過程。

不基於比較的排序----基數排序

上述幾種排序過程都是基於比較實現的,基數排序完全不需要比較就能實現,借助多關鍵字思想排序。

排序示例

類似堆疊的定義,堆疊中元素是可以先入後出的,而這裡排序借助了桶排序,資料是先入先出,從而實現有序。

線性表的查詢

分為順序查詢、二分查詢、分塊查詢三個方法。

順序查詢思路:從表一端開始,順序掃瞄。將掃瞄到的關鍵字與k值相比。

操作效能:確定記錄在查詢表的位置,需要知道平均查詢長度。(課本217頁說明)

二分查詢

查詢思路:先確定待查記錄所在範圍,在逐步縮小範圍直到找到該記錄

結合**理解

效能分析:效率高於順序查詢,但只適用於有序表,限於順序儲存結構

分塊查詢

又稱索引順序查詢,建立索引表查詢。

分塊查詢示例

動態查詢表

二叉排序樹、平衡二叉樹

二叉排序樹:左子樹不空,左子樹所有節點小於根結點值,右子樹反之。

平均查詢長度:

asl成功=結點所在層數*查詢次數/總結點個數

asl失敗=補空結點所在層數 *查詢該結點次數/補空結點個數

二叉排序樹結點刪除

練習

資料結構 知識點

定義 度 兒子數 分支節點 除了根和葉子的節點 根的深度為1 資料結構的分類 資料結構分為邏輯結構和物理結構。邏輯結構 表現資料之間的關係的一種資料結構,分為線性結構和非線性結構。物理結構 表現資料如何儲存的一種資料結構,通常分為順序結構 鏈式結構 索引結構和雜湊結構。有序表,也叫有序線性表,資料按...

資料結構知識點

1 線性結構與非線性結構 線性結構 線性表,棧,隊 乙個根節點,最多乙個前節點乙個後節點 首節點無前節點,尾接點無後節點 非線性結構 樹形結構,圖形結構 線性表 由一組資料元素構成,資料元素的位置只取決於自己的序號 陣列 棧 限定只能在表的一端進行插入和刪除,先進後出,只能在棧頂進出 佇列 只能在表...

資料結構,知識點

二叉樹 定義 二叉樹在圖論中是這樣定義的 二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3。有根二叉樹還要滿足根節點的度不大於2。基本概念 二叉樹是遞迴定義的,其結點有左右之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 2 只有乙個根節點的二叉樹 3 只有左子樹 4 只有右子樹 5 完全二叉樹。...