如果不是從一組隨機的序列裡查詢,而是從一組排好序的序列裡找出某個元素的位置,則可以有更快的演算法:
例 11.4. 折半查詢
#include #define len 8int a[len] = ;
int binarysearch(int number)
return -1;
}int main(void)
由於這個序列已經從小到大排好序了,每次取中間的元素和待查詢的元素比較,如果中間的元素比待查詢的元素小,就說明「如果待查詢的元素存在,一定位於序列的後半部分」,這樣可以把搜尋範圍縮小到後半部分,然後再次使用這種演算法迭代。這種「每次將搜尋範圍縮小一半」的思想稱為折半查詢(binary search)。思考一下,這個演算法的時間複雜度是多少?
陣列 二分查詢 簡單
描述 給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。在陣列 1,2,3,3,4,5,10 中二分查詢3,返回2。挑戰 如果陣列中的整數個數超過了2 32,你的演算法是否會出...
二分找下標
設n個不同的整數排好序後存於t 0 n 1 中.若存在若干 0 個下標i,0 i n 1,使得t i i.設計乙個有效演算法找到這些個下標.資料輸入 第1行有乙個正整數n,n 1000000,表示有n個整數 保證在int內 接下來一行是這n個整數.結果輸出 t i i的下標 若沒有則輸出no 注意輸...
陣列 二分查詢
package a array.a twopointssearch 二分查詢,增刪。優點 查詢速度比無序陣列快 缺點 刪除慢,因為資料項必須向前移動來填補已刪除資料項的洞 增加慢,需要移動大於增加數所對用索引後面的所有值 author administrator author administrat...