概念:二分查找是一个可以快速查找出目标元素的算法。
前提:二分查找需要在有序数组中使用。
核心思想:
先找到数组中中间的元素,如果要查找的元素比中间元素小,则排除中间元素右侧的所有元素,如果比中间元素大,则排除左侧所有元素。然后递归再对剩下的元素进行二分查找。示例代码:
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; } }