1. 程式人生 > >Java二分法查找實現

Java二分法查找實現

排序 需要 public oid pri 二分法查找 value while 位置

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二分法查找實現