折半查詢是一種比較高效的查詢方式,其基本思想是:在某個有序表中,取出中間的記錄作為比較物件,如果要查詢記錄的關鍵碼等於中間記錄的關鍵碼,則查詢成功;若要查詢記錄的關鍵碼小於中間記錄的關鍵碼,則在中間記錄的左半區繼續查詢;若查詢記錄的關鍵碼大於中間記錄的關鍵碼,則在中間記錄的右半區繼續查詢。不斷重複上述查詢過程,直到查詢成功,或有序表沒有所要查詢的記錄,查詢失敗。實現過程有兩種方式遞迴法和非遞迴法。
1.非遞迴法:查詢成功則返回位置,查詢失敗則範圍-1.
///非遞迴查詢1. numvec為待查詢的集合2.x為待查詢數值 3.beg為查詢範圍起始 4.last為查詢範圍結束
/int bisearch::bisearch(vectornumvec,int x,int beg,int last)
while(beg<=last)else if(x>numvec[mid])else if(x2.遞迴法:
int bisearch::iterbisearch(vectornumvec,int x,int beg,int last)else if(xnumvec[mid])
return -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 ...
查詢演算法 折半查詢
本小節知識點 1.掌握 基本思路 2.掌握 實現步驟 3.了解 練習 1.基本思路 在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功 若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷...
折半查詢演算法
折半查詢法 從表列中查乙個數最簡單的方法是從第1個數開始順序查詢,將要找的數與表列中的 數一一比較,直到找到為止 如果表列中無此數,則應找到最後乙個數,然後判定 找不到 但這種 順序查詢法 效率較低。如果表列中有1000個數,且要找的數恰恰是第1000個數,則要進行1000次比較才得到結果。平均比較...