二分查找
二分查找又稱折半查找
適用於順序存儲結構按有序排列
算法原理
將數組中間位置元素和目標元素進行比較,如果相同,則查找成功
如果不相等,那麼查找的元素一定前半部分或後半部分
如果目標元素大於中間元素,則查找後半部分,否則查找前半部分
重複上面的過程,直到找到滿足要求的元素,查找成功
如果還沒有找到,則此元素不在數組裏面
有一個數組:2,6,10,14,18,22,26
使用二分查找算法找出6在數組中的位置
代碼實現
public static void main(String args[]) {
int arr[] = {2, 6, 10, 14, 18, 22, 26};
//查找指定元素的位置
int index = binarySearch(arr, 6);
System.out.println("查找元素位置爲:" + index);
}
private static int binarySearch(int[] arr, int target) {
//第一個index
int min = 0;
//最後一個index
int max = arr.length - 1;
int mid = (min + max) >> 1;
//循環查找指定值的index
while (arr[mid] != target) {
//在左邊
if (arr[mid] > target) {
//更新最大值
max = mid - 1;
} else {
//在右邊,更新最小值
min = mid + 1;
}
//更新中間值
mid = (min + max) / 2;
if (min > max){
mid = -1;
break;
}
}
return mid;
}
到此結束了,希望對有需要的小夥伴有所幫助。