Java 二分搜尋 二分查詢

2021-08-15 10:39:35 字數 1053 閱讀 1299

對陣列元素進行逐個查詢顯然是費時費力的工作, 我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.

接下來我們介紹一種方法--二分搜尋法:

二分搜尋法充分利用了元素間的次序關係.基本思想:將n元素分成個數大致相同的涼拌,取arr[n/2]與欲查詢的x做比較,如果

下面將採用兩種方式(遞迴/非遞迴)來展示二分搜尋:

public class textarraysearch 

if(index < array[midindex]) else if(index > array[midindex]) else

} /**

* 利用非遞迴和二分搜尋法查詢特定整數在陣列中的位置

* @param array

* @param index

* @return -1 要搜尋的數字不合理

* @return midindex 要搜尋的數字的下標

*/public static int binarysearch2(int array, int index)

//迴圈判斷,根據起始位置與結束為止是否相等

while(beginindex <= endindex) else if(index > array[midindex]) else

} return -1; }

public static void main(string args) ;

int number = 18;

int num = 1;

//二分搜尋必須是有序數列

arrays.sort(array);

system.out.println(number + ":" + binarysearch1(array, number, 0, array.length-1));

system.out.println(number + ":" + binarysearch2(array, number));

system.out.println(number + ":" + binarysearch2(array, num));

}}

Java 二分搜尋

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列...

關於二分查詢和二分搜尋

首先是二分查詢,舉個有序的整數陣列例子 二分查詢和搜尋都是針對有序陣列 public int rank int key,int n else if cmp 0 else return lo 如果查詢到,返回陣列下標mid,如果沒找到,return lo 有人會問了為什麼返回lo?當然你非要在找不到的...

二分搜尋與STL二分查詢

用法 搜尋非遞減數列中是否包含某個元素 當資料量比較大的時候,二分比線性搜尋高效得多。流程 查詢36 實現 物件是非遞減序列,如果當資料無序時,需要預先進行一次排序。int binarysearch int a,int key,int n n為陣列長度 rerurn 0 陣列a中不存在key 複雜度...