Binary Search 二分查詢

2021-07-24 07:28:37 字數 876 閱讀 3409

90%以上的程式設計師無法正確無誤的寫出二分查詢**。- jon bentley

很久沒寫二分查詢的**,剛才很不幸發現我是上述中的90%以上的程式設計師裡的一員。有幾個要注意的點:

1. 先搞清楚要查詢的區間範圍,這個很重要。

2.mid = low + ((high - low) >> 1)可防止溢位。

貼一下自己寫的二分查詢**,警醒下:

#include using namespace std;

int binarysearch1(int a, int x, int low, int high)

else

if (x > a[mid]) else

return mid;

}return -1;

}int binarysearch2(int a, int x, int low, int high)

return -1;

}int main()

; cout << binarysearch1(a, 4, 0, 7) << endl;

cout << binarysearch2(a, 4, 0, 6) << endl;

return 0;

}

假設陣列下標範圍為0~n-1

對於binarysearch1而言,查詢失敗時low=high。對於binarysearch2而言,查詢失敗時low=high+1

此時low0~n之間的某個值。

二分查詢 Binary Search

打算重返c c 陣營,所以準備從演算法開始溫習,今天我們談到的是一種效率較高的查詢方法 二分查詢。什麼是二分查詢 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。二分查詢的基本思想是 1 首先確定該區間的中點位置 ...

二分查詢 BinarySearch

前置條件 乙個有序的序列 假設公升序排列 在序列中查詢指定元素 演算法 首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止。int binarysearch vector ...

二分查詢 BinarySearch

二分查詢又稱為折半查詢 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢...