查詢 二分法查詢 折半查詢法

2022-04-21 19:41:04 字數 901 閱讀 3585

實現查詢指定數值在元素有序的陣列中儲存的位置(索引),返回該位置(索引)。

解題步驟:

1.定義3個用來記錄索引值的變數,變數min記錄當前範圍最小索引值,初始值為0;變數max記錄當前範圍最大索引值,初始值為陣列長度-1;變數mid記錄當前當前範圍最中間元素的索引值,初始值為(min+max) / 2

2.使用迴圈,判斷當前範圍下,最中間元素值與指定查詢的數值是否相等

若相等,結束迴圈,返回當前範圍最中間元素的索引值mid

若不相等,根據比較結果,縮小查詢範圍為上一次查詢範圍的一般

中間元素值 比 要查詢的數值大,說明要查詢的數值在當前範圍的最小索引位置與中間索引位置之間,此時,更新查詢範圍為:

範圍最大索引值 = 上一次中間索引位置 -1;

中間元素值 比 要查詢的數值小,說明要查詢的數值在當前範圍的最大索引位置與中間索引位置之間,此時,更新查詢範圍為:

範圍最小索引值 = 上一次中間索引位置 +1;

在新的查詢範圍中,更新中間元素值的位置,再次使用最中間元素值與指定查詢的數值是否相等。

中間索引值 = (範圍最小索引值 +範圍最大索引值) / 2;

3.每次查詢範圍縮小一半後,使用if語句判斷,查詢範圍是否小於0個元素,若小於0個元素,則說明指定數值沒有查詢到,返回索引值-1。

//

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

public

static

int halfsearch(int arr,int

number)else

if(arr[mid]//

number在mid的右邊

min = mid+1; //

改變最小下標

}else

}return -1;

}

二分法查詢(折半查詢)

一 二分法查詢思想 首先從陣列的中間mid開始查詢,如果剛好等於要查詢的值,則返回這個數字的所在位置。如果要查詢的數字比mid值小,則讓mid 1,做為陣列的右邊界,重複 1 操做 如果要查詢的數字比mid大,則讓mid 1做為陣列的左邊界,重複 1 操作。如果left right時,還沒有找到該數...

折半查詢法 二分法

在有序 設為公升序 表中,取中間元素作為比較物件,若給定值與中間元素的關鍵字相等,則查詢成功 若給定值小於中間元素的關鍵字,則在中間元素的左半區繼續查詢 若給定值大於中間元素的關鍵字,則在中間元素的右半區繼續查詢。不斷重複上述查詢過程,直到查詢成功,或所查詢的區域無該資料元素,查詢失敗。測試資料 1...

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

折半演算法 二分法 只能應用在有序陣列中 從大到小或者從小到大 從左到右哈哈 int array int left 0 int right array.length 1 最右端的下標為總長度 1 int middle 中間下標 int sum 12 要查詢的數字 int index array.le...