查詢 二分查詢

2021-08-19 04:12:41 字數 880 閱讀 5629

二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素

按關鍵字有序排列

。首先,假設表中元素是按

公升序排列

,將表中間位置記錄的

關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置

記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的

記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

#includeint bisearch1(const int *ar, int n, int x) 

if (x left &&ar[mid - 1] == x)--mid;

pos = mid;

} else if (x < ar[mid])

else

}return pos;

}int bisearch2(const int *ar, int n, int x)

int main() ;

int n = sizeof(ar) / sizeof(ar[0]);

int pos = 0;

pos = bisearch1(ar, n, 89);

printf("元素%d使用非遞迴找到的下標:%d\n",89, pos);

pos = bisearch2(ar, n, 89);

printf("元素%d使用遞迴找到的下標: %d\n",89, pos);

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

查詢 二分查詢

參考 原始碼 目錄 順序查詢 二分查詢 插值查詢 斐波那契查詢 分塊查詢 雜湊查詢 二叉樹查詢 紅黑樹查詢 演算法簡介 二分查詢 binary search 是一種在有序陣列中查詢某一特定元素的查詢演算法。查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則查詢過程結束 如果某一特定元素...

查詢 二分查詢

二分查詢也叫做折半查詢,查詢的物件是已經排好序的序列 一般預設為公升序 讓我們來看看原理 顧名思義,就是先將中間數和目標key比較,如果相等則返回其索引,否則把序列分成兩半,根據大小判斷所查詢的key在哪一半中,對這一半序列再重複上述步驟,直到找到目標key或查詢完序列。被查詢的序列arr中無重複的...