二分查詢法 (折半法)

2021-07-22 12:12:51 字數 690 閱讀 8443

class arraytest8;

int index = binarysearch(arr, 45);

system.out.println(index);

}/*二分查詢法(折半法) 前提:陣列必須是有序的

如何去理解折半呢?

相信大家都玩過這個遊戲,我在心中想乙個數87,每猜一次我只能告訴你

是大了還是小了,你怎麼才能最快猜到這個數?

我們就利用折半的方法

1、50 小了

2、75 小了

........ 這樣我們就可以最快的找到了這個數字

思路:1、通過角標查詢中間的元素

2、把中間的元素和要找的數值進行比較

3、如果要找的數大了,縮小範圍,要找的範圍是 中間的位置+1—--尾角標

如果要找的數小了,縮小範圍,要找的範圍是 頭角標---中間的位置-1

4、如此不斷的重複,直到找到這個數字為止

*/public static int binarysearch(int arr, int key)

return mid;

}// 查詢;

/* 需求:查詢乙個元素在陣列中第一次出現的位置

//遍歷查詢

public static int searchkey(int arr, int key)

二分查詢法(折半查詢法)

二分查詢法 說明 如果搜尋的數列已經有排序,應該盡量利用它們已排序的特性,以減少搜尋比對的次數 這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。解法 在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數左邊的數一定都小於要搜尋 的物件,所以無需浪費時間在左邊...

二分查詢法 折半查詢法

二分查詢法 也稱折半查詢法,是一種效率較高的查詢方法,存在一定的侷限性。侷限性 適用於有序陣列 有序鍊錶等查詢,例如 array,list。基本原理 第一步 設定需要查詢的元素key,再設定low和high兩個臨時指標分別指向左邊第乙個元素和右邊最後乙個元素。第二步 因為資料是有序的,先根據low和...

二分查詢法(折半查詢法)

二分查詢用法 1 二分查詢要求 2 什麼時候使用二分查詢當在乙個有序list中,需要查詢乙個值,而這個值不確定在什麼位置時,使用該演算法可以通過極少的查詢次數得到結果 而使用簡單查詢,如果這個值在list的最後出現就需要查詢列表長度的次數才可以查到。也就是說,對於包含n個元素的列表,用二分查詢最多需...