7、二分查找

数组中有元素5,18,23,37,48,65,78,85,97,请找出85的位置
二分查找必须满足条件:
1、所有元素要么递增要么递减
2、每次只找一个元素

//普通查找
    public static int getIndex(int targt,int[] arr){
        int index = -1;
        int count = 0;
        for(int i = 0;i < arr.length;i++){
            count++;
            if(arr[i] == targt){
                index = i;
                break;
            }
        }
        System.out.println("执行了" + count +"次循环");
        return index;
    }
//二分查找
    public static int binarySearch(int targt,int[] arr){
        int left = 0;
        int right = arr.length - 1;
        int index = 0;
        int count = 0;
        while(left <= right){
            count++;
            int mid = (left + right) / 2;
            if(targt > arr[mid]){
                left = mid + 1;
            }else if(targt < arr[mid]){
                right = mid - 1;
            }else{
                index = mid;
                break;
            }
        }
        System.out.println("执行了" + count +"次循环");
        return index;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.7.1二分查找简介 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对...
    西谷haul阅读 1,878评论 0 0
  • 点赞关注,不再迷路,你的支持对我意义重大!Hi,我是丑丑。本文「数据结构 & 算法」| 导读 —— 登高博见[ht...
    彭旭锐阅读 5,802评论 1 6
  • 介绍 简介 条件:数组有序作用:查找数组中的某个值算法描述[https://zh.wikipedia.org/wi...
    N_G_U_C_O阅读 4,589评论 0 1
  • 二分查找是在每次匹配后,将查找的空间一分为二的算法,二分查找应该是有序的数组进行查找. 二分查找模板 1. 模板一...
    Tim在路上阅读 4,827评论 0 0
  • 原理并不复杂,[low,high]构成了潜在区间,如果中值不等于目标,则减半对应的区间。有一个问题:为什么循环条件...
    熊白白阅读 4,104评论 0 0