二分查找
概念:二分查找是一个可以快速查找出目标元素的算法。
前提:二分查找需要在有序数组中使用。
核心思想:
- 先找到数组中中间的元素,如果要查找的元素比中间元素小,则排除中间元素右侧的所有元素,如果比中间元素大,则排除左侧所有元素。
- 然后递归再对剩下的元素进行二分查找。
示例代码:
package com.evan.binary_search;
import java.util.Arrays;
public class BinarySearch {
public static void main(String[] args) {
int[] array = {2, 5, 12, 34, 56, 98, 102, 212, 500};
int targetElement = 12;
System.out.println("要操作的数组: " + Arrays.toString(array));
int result = binarySearch(array, targetElement);
System.out.println(targetElement + "在数组" + Arrays.toString(array) + "中的角标为: " + result);
}
public static int binarySearch(int[] array, int targetElement) {
int leftIndex = 0, rightIndex = array.length - 1, middleIndex = (leftIndex + rightIndex) / 2;
while(leftIndex <= rightIndex) {
int middleElement = array[middleIndex];
if(targetElement < middleElement) {
rightIndex = middleIndex - 1;
}else if(targetElement > middleElement) {
leftIndex = middleIndex + 1;
}else {
return middleIndex;
}
middleIndex = (leftIndex + rightIndex) / 2;
}
return -1;
}
}
2236





