基礎演算法之五 查詢 折半查詢

2021-06-06 18:36:20 字數 609 閱讀 2976

折半查詢

又稱為二分查詢。這種查詢方法要求查詢表的資料是線性結構儲存,並且還要求查詢表中的資料是按關鍵字由小到大有序排列。

折半查詢(二分查詢)是一種簡單而又高效的查詢演算法,其查詢長度至多為㏒2n+1(判定樹的深度),平均查詢長度為㏒2(n+1)-1,效率比順序查詢要高,但折半查詢只能適用於順序儲存有序表(如對線性鍊錶就無法有效地進行折半查詢)。

經典非遞迴演算法:

// 非遞迴折半

int binary_search(int search_table,int length,int key)

{ // 最低位置索引low、最高位置索引high、中間位置索引mid

// 中間位置的可能情況

// length為奇數時,mid 為正中間位置 mid的左側和右側用於同樣數目的元素

// length為偶數時,mid為正中間往左的那乙個元素 正中間為小數,正中間往左的那乙個位置才是(low+high)/2

// low與high的關係

// 正常情況下lowh

查詢演算法之折半查詢

binary search 折半查詢又稱二分查詢,要求資料序列呈線性結構,即先排序,在查詢。可以明顯的提高查詢速度,其流程如下 預設陣列為a 需查詢的值為x 首先設定3個變數low mid high,分別儲存陣列元素開始 中間和末尾元素的序號。接著進行以下判斷。1 如果陣列中序號為mid的值與需查詢...

查詢演算法 折半查詢

本小節知識點 1.掌握 基本思路 2.掌握 實現步驟 3.了解 練習 1.基本思路 在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功 若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷...

查詢演算法 折半查詢演算法

折半查詢演算法 binary search param a 乙個有序的集合 本次為由小到大 param x 需要查詢的值 ps 首先使用折半演算法的時候 集合必須是有序的 eg a 1,3,5,7,9 x 3 a mid low height 1,3,5,7,9 2 0 1 1,3 0 1 1 3 ...