3 二分查詢

2022-08-23 18:12:12 字數 1232 閱讀 3358

1.演算法簡介

1.二分查詢又稱折半查詢,它是一種效率較高的查詢方法。

2.二分查詢要求:(1)必須採用順序儲存結構 (2)必須按關鍵字大小有序排列(可以從小到大也可以由大到小)

2.原理

將陣列分為三部分,依次是中值(所謂的中值就是陣列中間位置的那個值)前,中值,後;將要查詢的值和陣列的中值進行比較,若小於中值則在中值前面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是乙個遞迴過程,將前半部分或者後半部分繼續分解為三部分。

3.**演示

//如果key比中間值小則終值為中間值-1進行下一次迴圈,如果key比中間值大則開始值為中間值+1進行下一次迴圈

while (start

else

if (key >srcarray[mid])

else

}return -1;

}/*遞迴實現查詢演算法,如果key等於中間位置的值則直接返回中間值的位置,如果key小於中間值,則呼叫下一次迴圈end值為中間值的前一位

如果key大於中間值則呼叫下一次迴圈start值為中間值的後一位

*/public

static

int binserch(int srcarray, int key, int start, int

end)

else

if (start >end)

if (key

else

if (key >srcarray[mid])

return -1;

}public

static

void

main(string args) ;

int seachvalue = 88;

system.out.printf("開始進行迴圈二分查詢%s的位置為%s", seachvalue, binserch(arr, seachvalue));

system.out.println();

system.out.printf("開始進行遞迴二分查詢%s的位置為%s", seachvalue, binserch(arr, seachvalue, 0, arr.length - 1));}}

Binary Search 《二分查詢》 3

例子 在這裡我將演示怎麼運用我們所討論的來解決乙個topcoder問題。為了這個我選擇了乙個難度適中的題目,fairworkload 是在srm169中div1中level 2的。對於這個問題,許多任務人需要檢查很多檔案櫥櫃。這些櫥櫃不都是相同的大小的,我們知道每個櫥櫃可以容納幾個資料夾。題目要求我...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...