利用二分查找有序数组中是否存在某个元素
package com.etime01;
public class Test06 {
public static void main(String[] args) {
int[] array = {4,6,7,9,15,20,35,40};//创建一个数组
binarySearch(array,9);//方法调用
}
public static void binarySearch(int[] array,int k) {//传入一个数组,和要查找的数
int max = array.length - 1;//数组索引的最大值
int min = 0;//数组的最小索引值
int mid = (min + max) / 2;//数组中间的索引值
boolean b = false;
for (int i = 0; i < array.length; i++) {//判断数组中是否有要查找的数
if (array[i] == k) {
b = true;
break;
} else {
b = false;
}
}
if (b) {
while (k != array[mid]) {//核心:通过不断的改变mid的值,缩小查找的范围
if (array[mid] > k) {
max = mid - 1;
mid = (max + min) / 2;
} else {
min = mid + 1;
mid = (max + min) / 2;
}
}
System.out.println(array[mid]);
} else {
System.out.println("数组中没有" + k);
}
}
}
版权声明:本文为shangzhi123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。