java--二分查詢法
阿新 • • 發佈:2021-01-29
技術標籤:資料結構與演算法
1.code
package com.yl.pdfdemo.day02;
/**
* @Author wfj
* @Date 2021/1/22
* @Description 二分法查詢
* @Version 1.0
*/
public class BinarySearch {
public static void main(String[] args) {
/**
* 二分查詢法
* 前提:
* 陣列必須有序
*
* 取中間值,拿目標值和中間值比較,目標值比中間值大,就往陣列的右半部分繼續找,否則就往陣列的左半部分查詢
*/
int[] arr = new int[] {-100,-30,10,20,50,190,200,500};
int dest1 = -30;
int start = 0; //初始的首索引
int end = arr.length - 1; //初始的末索引
boolean flag = true;
while(start <= end) {
int mid = (end + start) / 2;
if (dest1 == arr[mid]) {
System. out.println("目標已找到,位置為:" + mid);
flag = false;
break;
} else if (arr[mid] > dest1) {
//如果中間值比目標值要大,那麼我們應該是要往陣列的左半部分去找,所以end = mid - 1
end = mid - 1;
} else {
//如果中間值比目標值要小,代表著目標值在陣列的右半邊部分,所以start = mid + 1
start = mid + 1;
}
}
if (flag) {
System.out.println("目標不存在!!!");
}
}
}
2.結果