二分查詢演算法解析(java版)

2021-06-26 01:48:37 字數 1507 閱讀 1790

(1

)確定該區間的中點位置:

mid=

(low+high

)/2    

min代表區間中間的結點的位置,

low代表區間最左結點位置,

high

代表區間最右結點位置 (

2)將待查

a值與結點

mid的關鍵字(下面用

r[mid].key

)比較,若相等,則查詢成功,否則確定新的查詢區間: 如果

r[mid].key>a

,則由表的有序性可知,

r[mid].key

右側的值都大於

a,所以等於

a的關鍵字如果存在,必然在

r[mid].key

左邊的表中。這時

high=mid-1 如果

r[mid].key則等於

a的關鍵字如果存在,必然在

r[mid].key

右邊的表中。這時

low=mid 如果

r[mid].key=a

,則查詢成功。 (

3)下一次查詢針對新的查詢區間,重複步驟(

1)和(2)

(4)在查詢過程中,

low逐步增加,

high

逐步減少,如果

high,則查詢失敗。

//	1、遞迴實現:

public static int binaryserach2(int array, int low, int high, int key)

if (array[middle] == key) else if (array[middle] > key) else

}

//	2、while迴圈實現:

public static int binaryserach(int array, int key)else if (array[middle] > key) else

} return -1;

}

public static int binarysearch(int a, int fromindex, int toindex,

int key)

// like public version, but without range checks.

private static int binarysearch0(int a, int fromindex, int toindex,

int key)

return -(low + 1); // key not found.

}// 健壯性判斷

private static void rangecheck(int length, int fromindex, int toindex)

if (fromindex < 0)

if (toindex > length)

}

二分查詢 Java版

演算法思想 又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。三種查詢方法的比較 平均效能 斐波那契 折...

二分查詢 Java版

二分查詢 二分查詢又稱折半查詢,它是一種效率較高的查詢方法 實現原理 通俗點來講就是將要查詢部分對折,然後分為三部分 中間部分,中間前的部分,中間後的部分,將要查詢的和中間部分進行比較,如果小於中間部分則在中間部分的前面找,否則就在中間部分的後邊找,然後再重複上邊折半的過程 使用要求或者前提 通過實...

二分查詢演算法解析

參考文章 二 分查詢,你真的掌握了嗎?目標 在乙個有序的陣列中,找出指定資料所處的位置。時間複雜度就是重複次數的同一量級 order 通俗講就是迴圈次數的同一量級啦。這樣看,初始時,查詢範圍大小為n 陣列的長度 第一次迴圈後,查詢範圍大小為n 2 第二次迴圈後,查詢範圍大小為n 4 第三次迴圈後,查...