您当前的位置: 首页 >  算法

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

二分查找算法

小志的博客 发布时间:2019-02-13 22:36:35 ,浏览量:0

二分查找的条件:是对一组有序数组的查找,在使用二分查找的时候先要对数组进行排序。

二分查找的思路:一个有序数组,想要查找一个数字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            
关注
打赏
1661269038
查看更多评论
0.0398s