Java二分法查詢

2021-08-02 01:49:10 字數 992 閱讀 5158

前提:必須是有序的資料。

基本思想:把乙個有序的資料乙份為二。然後判斷是比目標資料大了還是小了,如果小了往左邊的部分找;如果大了往右邊的資料找。確定了找的方向後再次把資料一分為二,繼續上面的步驟直到找到為止。涉及到了遞迴的思想。

通俗的講:每次減少一半,然後確定方向,再次減少一半,直到找到為止。

1:傳入的資料:

2:找到陣列中間數的下標。就是傳入的左右範圍除二:(rightindex+leftindex)/2

3:通過下標找到中間數

4:設定遞迴的結束判斷,防止遞迴變成死龜,不會結束直到越界。:(左邊的下標要 <= 右邊的下標)

5:設定判斷二分的條件,分三種情況:

package com.test_1;

public

class demo5_4 ;

//建立binaryfind物件,呼叫查詢方法

binaryfind bfind = new binaryfind();

bfind.find(0, arr.length-1, 7, arr);

}}//-----------二分法查詢(前提是必須是有序陣列)

class binaryfind

else

if (midval//在arr右邊數中找(遞迴)

find(mindindex+1,rightindex,val,arr);

//如果要找的數等於midval(中間數)

}else

if (midval == val) }}

}

Java 二分法查詢

這學期學了資料結構這門課,這會都期末了才想起來更新部落格,所以我就來了,話不多說。如下 package com.vgbh public class binarysearch 二分法查詢必須是已經排序好的數列,且必須為正序,才可進行查詢 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢...

二分法查詢 Java

原理 基本思想 假設資料是按公升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功 若x小於當前位置值,則在數列的前半段中查詢 若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。演算法 假如有一組數為3,12,24,36,55,68,75,88要查給定的值2...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...