使用二分查找的前提是,查找的数组顺序必须是有序的。
二分查找又称折半查找,通过定义有序数组(左小右大)的首元素的索引为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>
网友评论