Java二分法查找實現
public class Dichotomy {
//定義查找次數
static int count = 0;
public static void main(String[] args) {
//定義數組
int [] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//二分法查找
int result = searchRecursive( array, 0, array.length - 1, 3);
//打印結果
System.out.println("二分法查找結果為=" + result);
System.out.println("查找次數為=" + count);
}
/**
* 執行遞歸二分查找,返回第一次出現該值的位置
*
* @param array
* 已排序的數組
* @param start
* 開始位置
* @param end
* 結束位置
* @param findValue
* 需要找的值
* @return 值在數組中的位置,從0開始。找不到返回-1
*/
private static int searchRecursive(int[] array, int start, int end, int findValue) {
//數組如果為空則返回-1
if(array == null){
return -1;
}
while(start <= end){
count++;
//獲取中間位置
int middle = (start + end) / 2;
//獲取中間值
int middleValue = array[middle];
if(middleValue == findValue){
return middle;
}else if(findValue < middleValue){
end = middle - 1;
}else{
start = middle + 1;
}
}
return -1;
}
}
Java二分法查找實現