查詢演算法之 二分查詢

2021-09-01 11:17:15 字數 983 閱讀 2019

這個例項給出了二叉搜尋演算法在9個元素的陣列arr中查詢某個目標值的過程01

2345

678-7

35812

1623

3355

例子1:查詢目標值2301

2345

678-7

35812

1623

3355

步驟1:索引範圍[0,9];索引first=0,last=9,mid=(0+9)/2=4

target=23>midvalue=12;因為沒有查詢到匹配,修改fist=5,last=901

2345

678-7

35812

1623

3355

步驟2:索引範圍[5,9],索引fist=5,last=9,mid=(5+9)/2=7

target=23012

3456

78-73

581216

2333

55步驟3:索引範圍[5,7],索引first=5,last=7,mid=(5+7)/2=6

target=23==midvalue=23,找到匹配元素,返回這個索引值

public static int binsearch(int arr,int first,int last,int target) {

int mid,midvalue;

//1.取住陣列的中間位置

//2.比較目標值和中間位置的值

//a.目標》中間值 ---->在後半部分遞迴

//b.目標值《中間值--->在前半部分遞迴

//c.目標值==中間值-->找到了查詢目標,返回這個元素的陣列索引

//3.如果first>=last--->終止查詢返回-1

查詢演算法之二分查詢

二分查詢,也是經常會問道的,以下寫法主要是針對已經排好序,且不會受到重複元素影響的陣列使用。二分查詢 param string find 要查詢的值 param array array 要查詢的陣列 return bool string function binarysearch find arra...

查詢演算法之二分查詢

在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。對於這樣的有序序列,可以使用二分查詢的演算法來實現。如下圖序列,二分查詢20。在有序表中,取中間資料作為比較物件,若給定值與中間記錄的數值相等,則查詢成功 若給定值小於中間值的數值,則在中間值的左半...

查詢演算法之二分查詢

採用二分查詢乙個有序陣列中的值,二分查詢使用與有序陣列,所以陣列必須得是有序的。二分查詢 給定乙個有序陣列,請使用盡可能高效的演算法查詢乙個目標值target,如果存在返回true,否則返回false public class binarysearch int target 55 system.ou...