二分查找
Posted 凯玲之恋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找相关的知识,希望对你有一定的参考价值。
二分查找
二分查找 :查找元素对应的索引
前提:数组元素有序
折半查找:
图解:
代码实现
案例:
- public class Demo2_Array {
- public static void main(String[] args) {
- int[] arr = {11,22,33,44,55,66,77};
- System.out.println(getIndex(arr, 22));
- System.out.println(getIndex(arr, 66));
- System.out.println(getIndex(arr, 88));
- }
- public static int getIndex(int[] arr, int value) {
- int min = 0;
- int max = arr.length - 1;
- int mid = (min + max) / 2;
- while(arr[mid] != value) { //当中间值不等于要找的值,就开始循环查找
- if(arr[mid] < value) { //当中间值小于了要找的值
- min = mid + 1; //最小的索引改变
- }else if (arr[mid] > value){ //当中间值大于了要找的值
- max = mid - 1; //最大的索引改变
- }
- mid = (min + max) / 2; //无论最大还是最小改变,中间索引都会随之改变
- if(min > max) { //如果最小索引大于了最大索引,就没有查找的可能性了
- return -1; //返回-1
- }
- }
- return mid;
- }
- }
注意事项
如果数组无序,就不能使用二分查找。
因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。
以上是关于二分查找的主要内容,如果未能解决你的问题,请参考以下文章