二分查找(Java实现)

二分查找

概念:二分查找是一个可以快速查找出目标元素的算法。

前提:二分查找需要在有序数组中使用。

核心思想:

  1. 先找到数组中中间的元素,如果要查找的元素比中间元素小,则排除中间元素右侧的所有元素,如果比中间元素大,则排除左侧所有元素。
  2. 然后递归再对剩下的元素进行二分查找。

示例代码:

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;
	}

}

 

 

你可能感兴趣的:(Java)