二分查找的条件:是对一组有序数组的查找,在使用二分查找的时候先要对数组进行排序。
二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid把这个数组分为两半,前一半从下标0到mid-1,后一半从mid+1到数组最后一个元素(下标是数组长度减一)。把这个查找的元素key和数组下标为mid的元素进行比较,也就是和中间那个元素进行比较,如果比这个元素的小那么把查找范围缩小到原数组的前一半(把查找下标缩短到0到mid-1),如果比中间mid下标元素大那么范围就是后半部分(下标为mid+1到数组长度减一),这样来回反复取中间比较最后就会定位到要查找元素key的下标。
二分查找有两种实现方式:
- 非递归实现
- 递归实现
下面举例非递归实现
public class binarySearch {
/**
* 测试类,随机定义个有序数组
*/
public static void main(String[] args) {
int[] arr = { 8, 15, 23, 85, 92, 102, 205, 345 };
System.out.println("非递归查找:" + (binarySearch(arr, 23)));
}
/**
* @param array 操作数组
* @param key 查找元素
* @return 元素下标
*/
public static int binarySearch(int[] array,int key){
int start=0;
int middle;//数组的中间下标
int end=array.length-1;//数组长度
while(start=end){
return -1;
}else if(key>array[middle]){
return binarySearch1(array,key,middle+1,end);
}else if(key
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?