菜鸟对BinarySearch(二分查找)的总结:
1.要求被查找的数据为有序数组
2.且插入删除操作困难
适用范围:不经常变动且查找操作频繁的有序数组。
现在我们用一个case来测试,如下
如上就是一个简单的二分查找实现了
二分查找一般又被称作折半查找
优点是:查找次数比较少,平均性能好
缺点是:1.要求被查找的数据为有序数组
2.且插入删除操作困难
适用范围:不经常变动且查找操作频繁的有序数组。
代码实现 binarySearch(int[] x, int n) 其中 x为被查找的有序数组,n为被查找的数,返回的mid=-1的话,当前数组中没有n
public static int binarySearch(int[] x, int n){
int start = 0;
int mid = -1;
int end = x.length - 1;
while(start <= end){
mid = (start + end)/2;
if(x[mid] == n){
return mid;
}else if(x[mid] > n){
end = mid - 1;
}else if(x[mid] < n){
start = mid + 1;
}
}return mid;
}
现在我们用一个case来测试,如下
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6,8,11,45,89,102,99,47,66};
Arrays.sort(nums);
System.out.println("排后的数组为:");
<span style="white-space:pre"> </span>for(int num : nums)
<span style="white-space:pre"> </span> System.out.print(num+ " ");
//
int index = binarySearch(nums,47);
System.out.println("查找到的下标为:"+index);
}
得出的结果为9.
如上就是一个简单的二分查找实现了