二分查找
概念介绍 有同学想了解二分查找,今天它来了!二分查找也叫折半查找,查找效率较高。但是它有一个 使用前提:待查找的序列必须为有序的,升序或降序都可以 。我们来看一下它的核心思想:假设有n个元素的序列升序排列,以中间值arr[n/2]将序列分为两部分,我们取序列的中间值arr[n/2]与待查找数x比较,如果x<arr[n/2],就在序列的左半部分继续进行二分查找,如果x>arr[n/2],就在序列的左半部分继续进行二分查找,退出二分查找的条件为x=arr[n/2]。概念总是太抽象,咱们举例子来说明。 需求:在arr=[1,3,5,7,9,10,13,18]中,找到5。 第一轮查找:中间值为arr[(起始值下标:0+末位置下标:arr.length-1)/2]=arr[(0+8-1)/2]=arr[3],因为5<7,在第一轮中间值左半部分查找,也就是[ 1,3,5, 7 ,9,10,13,18](红色序列元素中查找)。 第二轮查找:找第二轮中间值arr[(起始值下标:0+第一轮中间值下标-1)/2]=arr[(0+3-1)/2]=3,3<5,在第二轮中间值右半部分查找,也就是[1,3, 5 ,7,9,10,13,18](红色序列元素中查找)。 第三轮查找:找第三轮中间值arr[(起始值下标:第二轮中间值下标+1+结束下标:第一轮中间值下标-1)/2]=arr[(2+3