二分查找法

2019-07-24  本文已影响0人  以宇宙为海的蓝鲸

使用二分查找的前提是,查找的数组顺序必须是有序的。

二分查找又称折半查找,通过定义有序数组(左小右大)的首元素的索引为min,尾元素的索引为max,数组中心元素的索引为mid。将mid的值与要查找的值进行比较,如果mid的值小于要查找的目标值,则目标值在mid的右边,反之则在左边。当在右边时max的值不变,min的索引改变为mid+1的索引,mid也改变位置,再次处于min和max的中间位置,大概为(min+max)/2。当在左边时,则min的位置不变,max的索引变成mid-1的索引。依次,重复计算mid的值,直至最后相等或者查找不到目标值。

图例:

冒泡排序.png

代码示例:

package com.mage.day24;
​
public class Demo01 {
 public static void main(String[] args) {
 int[] arrs = {1,2,3,4,5,6,7,8,9};
 int key = 4;
 int result = binerySearch(arrs,key);
 System.out.println("目标值的索引是:"+result);
 }
 public static int binerySearch(int[] arrs, int key) {
 //定义索引
 int min = 0;
 int max = arrs.length-1;
 int mid;
 while(min<=max) {
 mid = (min+max)/2;
 if(key>arrs[mid]) {
 min = mid+1;
 }else if(key<arrs[mid]) {
 max = mid-1;
 }else {
 return mid;
 }
 }
 return -1;  //返回-1证明没有找到
 }
}
//查找4的索引值,返回索引值为3</pre>
上一篇下一篇

猜你喜欢

热点阅读