二分查詢及遞迴的二分查詢

2021-09-24 19:28:30 字數 984 閱讀 4496

一、思路

二分查詢又名折半查詢,顧名思義是分成兩部分,每查詢一次資料減半,所以查詢起來會很快。但是二分查詢的條件是已經有序的資料。

1、設定兩個變數i,j.為查詢的範圍,i一般為0,j一般為陣列長度減一;

2、設定變數mid,mid為所查陣列範圍的中間位置,即mid=(i+j)/2;

3、比較所要查詢的資料val與arr[mid];

4、如果val等於a[mid],找到資料,跳出迴圈

5、如果val小於arr[mid],將查詢範圍鎖定在mid左邊,即j=mid-1;

6、如果val大於arr[mid],將查詢範圍鎖定在mid右邊,即i=mid+1;

7、重複3 ;

//二分查詢

private static int binarysearch(int arr, int first, int last, int val)

//如果所給資料在前半段

else if(val=0;--j);

int idx=binarysearch(arr, 0,arr.length-1,54);

system.out.println(arrays.tostring(arr));

system.out.println(idx);

}

三、結果

四、**的優化

將查詢寫成遞迴的形式,遞迴就是通過自己呼叫自己的方法使得程式更簡單!

遞迴包括了兩部分:

1、遞迴頭

遞迴頭的作用:什麼時候不呼叫自身方法。如果沒有頭,將陷入死迴圈,也就是遞迴的結束條件。

2、遞迴體

遞迴體的作用:在什麼情況下 方法會自己呼叫自己!

**:

private static int binarysearch(int arr,int i,int j,int val)else

}

二分查詢和遞迴的二分查詢

在乙個有序的陣列中查詢給定的資料項,把陣列衝中間分成兩半,然後看要查詢的資料項在陣列的哪一半,再次折半查詢。如下 public int find long searchkey else if lowerbound upperbound else private int recfind long se...

二分查詢及變種二分查詢

二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...

二分查詢與遞迴式二分查詢

二分查詢 public class binarysearch arrays.sort arr todo auto generated method stub int low 0 int high arr.length 1 while low high elseelse 遞迴實現二分查詢 public...