漫画:什么是二分查找?

Posted 程序员小灰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漫画:什么是二分查找?相关的知识,希望对你有一定的参考价值。

漫画:什么是二分查找?



—————  第二天  —————



漫画:什么是二分查找?

漫画:什么是二分查找?


漫画:什么是二分查找?


什么意思呢?我们来举两个栗子:


给定一个有序数组 

2,5,7,9,12,14,20,26,30


Case 1:

漫画:什么是二分查找?


Case 2:

漫画:什么是二分查找?

漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?

漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?

漫画:什么是二分查找?

漫画:什么是二分查找?



————————————



漫画:什么是二分查找?

漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?

漫画:什么是二分查找?

漫画:什么是二分查找?

漫画:什么是二分查找?


漫画:什么是二分查找?

漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?


为什么说这样效率最高呢?因为每一次选择数字,无论偏大还是偏小,都可以让剩下的选择范围缩小一半。


给定范围0到1000的整数:


漫画:什么是二分查找?


第一次我们选择500,发现偏大了,那么下一次的选择范围,就变成了1到499:


漫画:什么是二分查找?


第二次我们选择250,发现还是偏大了,那么下一次的选择范围,就变成了1到249:


漫画:什么是二分查找?


第三次我们选择125,发现偏小了,那么下一次的选择范围,就变成了126到249:


漫画:什么是二分查找?


以此类推,最坏的情况需要猜测多少次呢?答案是 log1000 = 10次,也就是让原本的区间范围进行10次 “折半”。



刚才我们所分析的是猜数字的游戏。如果我们把场景转换成最初的面试问题:在包含1000个整型元素的有序数组中查找某个特定整数,又该如何去做呢?


同样道理,我们可以首先判断下标是499的元素(因为数组下标从0开始,到999结束),如果元素大于要查找的整数,我们再去判断下标是249的元素,然后判断下标124的元素......以此类推,直到最终找到想要的元素,或者选择范围等于0为止。


上述这个过程,就是所谓的二分查找算法,查找的时间复杂度是log(n)。


漫画:什么是二分查找?


漫画:什么是二分查找?


 
   
   
 
  1. public static int binarySearch(int []array,int target){

  2. //查找范围起点

  3. int start=0;

  4. //查找范围终点

  5. int end=array.length-1;

  6. //查找范围中位数

  7. int mid;

    1. //迭代进行二分查找

  8. while(start<=end){

  9. mid=(start+end)/2;

  10. if(array[mid]==target){

  11. return mid;

  12. }else if(array[mid]<target){

  13. start=mid+1;

  14. }else{

  15. end=mid-1;

  16. }

  17. }

  18. return -1;

  19. }


  20. public static void main(String[] args) {

  21. int[] array = new int[1000];

  22. for(int i=0; i<1000;i++){

  23. array[i] = i;

  24. }

  25. System.out.println(binarySearch(array, 173));

  26. }


漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?


漫画:什么是二分查找?



—————END—————



最后安利一下小灰创建的免费知识星球

每天都有许多有趣的抢答活动和各种奖品,

关键是不要钱!欢迎大家扫码加入:


以上是关于漫画:什么是二分查找?的主要内容,如果未能解决你的问题,请参考以下文章

用C++写二分查找了!手绘漫画图解LeetCode之搜索插入位置(LeetCode 35)

漫画算法:“旋转数组”中的二分查找

漫画:“旋转数组”中的二分查找

《漫画算法2》源码整理-1 二分查找树 AVL树 红黑树

再也不怕女朋友问我二分查找了!!!手绘漫画面试必考之二分查找(解题模板和深度剖析),最终回

算法 | 这样分析二分查找算法 更简单。