二分查詢 C 查詢思路的起始

2021-10-04 21:05:19 字數 809 閱讀 9758

二分查詢就是將有序序列一分為二,注意必須是有序序列,將待查詢的值與有序序列的中間位置的值進行比較,相等則已找到,小於則在左半繼續找,大於則在右半繼續找,依次類推,每找一次去掉一半的資料,用排序演算法將序列排好序且可以進行各種動態維護後,就可以用二分查詢的方式對某個資料進行查詢了,對於乙個有序序列二分查詢的思路要比每個資料遍歷一次的o(n)級別要快,查詢一次的時間複雜度為o(logn)

二分查詢是一種廣泛運用的思路,正是這種思路有了讓二叉樹有了廣泛的應用,當然樹的形式不只限於二叉;也正是因為這個思路讓分治的思路得以延申出來,面對乙個龐大的複雜的問題時,拆解成多個小部分進行解決,然後再整合結果的玩法讓資料結構與演算法的優化得以不斷發展;

以下給出了二分查詢法最基本的兩種玩法,一種用了非遞迴的方式,一種用了遞迴的方式,因為非遞迴的特性(不用開闢那麼多的空間出來),在時間上略勝遞迴玩法,當然還是在乙個數量級內的~~

// 找到element,返回相應的索引下標,序列必須是有序序列,在有序序列中才能用二分查詢法

templateint binarysearchnonrecursive(t arr, int n, t element)

return -1;

}

// 二分查詢法--遞迴玩法,序列必須是有序序列,在有序序列中才能用二分查詢法

templateint __binarysearchrecursive(t arr, int l, int r, t element)

templateint binarysearchrecursive(t arr, int n, t element)

c 二分查詢

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。不妨設有序表是遞增有序的。public class program else return 1 查詢失敗 public static void main string...

C 二分查詢

二分查詢,又叫折半查詢,顧名思義,可以通過比較中間位置是否與要查詢的相等。如果相等即找到了目標,否則,看目標落在中間位置左側還是右側,然後再同樣的到對應區間去找。假設我們有這樣乙個陣列 define maxsize 10 int array maxsize 我們可以標記左下標以及右下標 int le...

二分查詢C

雖然二分查詢思路很簡單,但實現起來需要注意很多細節。如區間是閉合區間還是前開後閉區間,迴圈的退出條件是left right 還是 left right,下一步搜尋是使用mid還是mid 1等。普通二分查詢 遞迴 intbinary search const vector int nums,const...