二分查詢
二分查詢演算法,說白了就是在有序的陣列裡面給予乙個存在陣列裡面的值key,然後將其先和陣列中間的比較,如果key大於中間值,進行下一次mid後面的比較,直到找到相等的,就可以得到它的位置。
前提:線性表中的記錄必須是關鍵字有序(通常從小到大),線性表必須採用順序儲存。
基本思想:取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查詢;否則,在右半區查詢。不斷重複,直到查詢成功或查詢失敗為止。
#include
#include
#define n 10
using namespace std;
int main()
cout<>x;
front=0;
end=n-1;
mid=(front+end)/2;
while(frontwww.cppcns.com!=x)
else
return 0;
}後記:
查詢和排序都是在程式設計中經常用到的演算法,查詢相對而言較為程式設計客棧簡單,不外乎順序查詢、二分查詢、雜湊表查詢和二叉排序樹查詢。
在面試的時候,不管是用迴圈還是用遞迴,面試官都期待應聘者能夠信手拈來寫出完整的二分查詢**,否則可能連繼續面試的興趣都程式設計客棧沒有。
總結
查詢演算法之 二分查詢
這個例項給出了二叉搜尋演算法在9個元素的陣列arr中查詢某個目標值的過程01 2345 678 7 35812 1623 3355 例子1 查詢目標值2301 2345 678 7 35812 1623 3355 步驟1 索引範圍 0,9 索引first 0,last 9,mid 0 9 2 4 t...
查詢演算法之二分查詢
二分查詢,也是經常會問道的,以下寫法主要是針對已經排好序,且不會受到重複元素影響的陣列使用。二分查詢 param string find 要查詢的值 param array array 要查詢的陣列 return bool string function binarysearch find arra...
查詢演算法之二分查詢
在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。對於這樣的有序序列,可以使用二分查詢的演算法來實現。如下圖序列,二分查詢20。在有序表中,取中間資料作為比較物件,若給定值與中間記錄的數值相等,則查詢成功 若給定值小於中間值的數值,則在中間值的左半...