首页 > 编程语言 > 详细

二分查找算法

时间:2020-09-01 16:24:04      阅读:46      评论:0      收藏:0      [点我收藏+]

二分查找【重点】

  前提

    数组必须有序

  思路

    1.只要开始索引大于结束索引,就代表数组中没有该值

    2.中间索引位置元素大于目标值

        修改结束索引等于中间索引减1

    3.中间索引位置元素小于目标值

        修改索引等于中间索引加1

    4.中间索引位置元素等于目标值

        返回索引

    5.不确定循环次数

        while

        条件:开始索引小于等于结束索引

例图:

 技术分享图片

 

 

 

代码:

public static void main(String[] args) {
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90};
//目标值
int userNumber = 70;
//调用方法,返回索引,没有返回-1
int numberIndex = getBinarySearch(arr, userNumber);
System.out.println("值在数组中索引是:" + numberIndex);
}

/**
* //二分查找方法,返回索引,没有返回-1
* @param arr
* @param userNumber
* @return
*/
private static int getBinarySearch(int[] arr, int userNumber) {
//开始索引
int startIndex = 0;
//结束索引
int endIndex = arr.length - 1;
//判断是否存在(开始索引<=结束索引)
while (startIndex <= endIndex) {
//中间索引 = (开始+结束)÷2
int midIndex = (endIndex + startIndex) / 2;
//如果(中间索引位置元素>目标值)
if (arr[midIndex] > userNumber) {
//修改结束索引 = 中间索引 - 1
endIndex = midIndex - 1;
} else if (arr[midIndex] < userNumber) {
startIndex = midIndex + 1;
} else {
//否则 返回索引
return midIndex;
}
}
//没有返回-1
return -1;
}

二分查找算法

原文:https://www.cnblogs.com/saoge/p/13596089.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!