資料結構與演算法 二分查詢發

2021-09-27 04:18:09 字數 759 閱讀 1779

​ 取中間索引位置的資料和查詢的資料進行比較,如果中間索引位置的資料更大,說明查詢的資料在中間索引的左邊,此時 最大索引等於 上一次中間索引-1 重新計算中間索引,如果中間索引位置的資料更小 說明查詢的資料在中間索引的右邊,此時 最小索引等於上一次中間索引+1 重新計算中間索引

​ 操作的陣列必須是有序的

​ 需要先找到 最大索引 最小索引 中間索引

​ 陣列最大索引:maxindex = arr.length-1;

​ 陣列最小索引:minindex = 0;

​ 中間索引:halfindex =(maxindex+minindex)/2;

public

static

void

main

(string[

] args)

;int a =

binsearch

(arr,9)

; system.out.

println

(a);

}static

intbinsearch

(int

arr,

int i)

else

if(arr[halfindex]

else

//重新計算中間索引

halfindex =

(maxindex+minindex)/2

;}//沒有找到 預設返回-1

return-1

;}

資料結構與演算法 二分查詢

二分查詢的思想是在已經排序 公升序 的陣列中,如果要查詢的數比中位數小,那麼其位置只可能在左半部分,相反只能在右半部分。這樣每次把查詢區間縮小一半,比順序查詢效率快得多。非遞迴寫法 public static int binarysearchinasclooply int nums,int star...

資料結構與演算法,二分查詢

1.時間複雜度 每次能去掉一半即 logn 2.實現方式 while迴圈 與 遞迴 我更推薦 while 迴圈,因為遞迴有個潛在的問題就是 stack over flow 堆疊溢位 而且在實際工程中是盡量避免遞迴的。雖然遞迴寫起來方便,也不容易出錯。3.實現關鍵點 我總結了下,一共有以下四點 sta...

資料結構與演算法 二分查詢

基礎概念 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用陣列作為表的儲存結構。不妨設有序表是遞增有序的。通俗理解 每次首先找到陣列的中間位置 middle 然後把待查詢數 target 與middle進行比較。如果查詢數target ...