經典演算法 二分查詢

2021-07-07 09:22:06 字數 970 閱讀 1269

二分查詢這種老生常談的話題,說的很簡單,但是仍然有些大夥不明白,所以這裡希望自己能夠寫出一篇很淺顯易懂的部落格幫助大家理解

給定陣列已經排序好,然後對其進行編號。這裡我們預設是從小到大的,否則演算法就要進行更改了 = =

思想:

因為陣列是有序的,所以每次和陣列中間的乙個比較,通過和其大小的關係,然後再折半比較

疑問:我想很多同學不明白的是為什麼這種方式就能滿足一定能查詢出想要的結果。事實是這樣的,這樣肯定是能夠完成的,不信你自己舉出奇數個和偶數個的數列,然後通過此方式,絕對能判斷出來

規則:

初始化:設定low = 0,high = (陣列最後乙個元素下標),假設陣列為a

迴圈的過程:middle = (low+high)/2;

注意這裡middle是指我們待比較的數列中數的下標

if a[middle] > goal(指目標數) high = middle - 1;

if a[middle] < goal low = middle +1;

結束條件: if(a[middle] == goal ) cout<

經典演算法 二分查詢

題目說明 二分查詢法是對一組有序的數字中進行查詢,傳遞相應的資料,進行比較查詢到與原資料相同的資料,查詢到了返回對應的陣列下標,失敗返回 1。題目解析 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢...

經典的查詢演算法1 二分查詢

二分查詢演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 在本篇文章中為了說明問題的方便,假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到...

經典演算法學習 二分查詢

在所有的查詢演算法中,二分查詢是最簡單一種。二分查詢要求原先的序列是已經排序的,每次都是以序列中間的數字作為比較,如果小於中間的數字,那麼就在序列左邊繼續遞迴查詢 如果大於中間的數字,那麼就在序列右邊繼續遞迴查詢。直到找到該數字,或者直到序列中只有乙個數字的時候都還沒找到,則查詢失敗。查詢的時間複雜...