二分查找法

二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。
搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜 素过程结束;
如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
如果在某一步骤数组 为空,则代表找不到。
这种搜索算法每一次比较都使搜索范围缩小一半。
折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。

采用递归方式完成二分查找法

  代码:
          public static int binSearch(int srcArray[], int start, int end, int key) {
                         int mid = (end - start) / 2 + start; 
                        if (srcArray[mid] == key) { 
                                return mid;
                       } if (start >= end) { 
                                return -1; 
                      } else if (key > srcArray[mid]) {
                                 return binSearch(srcArray, mid + 1, end, key); 
                      } else if (key < srcArray[mid]) { 
                                return binSearch(srcArray, start, mid - 1, key); 
                      }
                         return -1; 
    } 

采用非递归方式完成二分查找法

    代码:
              public static int binSearch(int srcArray[], int key) { 
                            int mid = srcArray.length / 2; 
                            if (key == srcArray[mid]) { 
                                return mid;
                           } 
                            int start = 0; 
                            int end = srcArray.length - 1; 
                            while (start <= end) { 
                                mid = (end - start) / 2 + start; 
                                if (key < srcArray[mid]) {
                                         end = mid - 1;
                                 } else if (key > srcArray[mid]) { 
                                        start = mid + 1; 
                                } else {
                                         return mid;
                               }
                         } 
                          return -1;
                 }    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 好久没有和大家见面了,最近一周每天晚上都在搬家,一直没有时间。今天来给大家分享一道面试的时候,被问及的一道算法题:...
    小草莓子桑阅读 1,165评论 1 12
  • 二分查找法主要用来解决查找的问题 1、二分查找法Binary Search (注)对于有序数列才能使用二分查找法。...
    老实李阅读 787评论 1 1
  • 优缺点 二分查找又称折半查找。 优点:比较次数少,查找速度快,平均性能好。 缺点:要求待查表为有序表,且插入删除困...
    linheimx阅读 1,142评论 0 1
  • 3期心灵自由写作17篇 从小到大我都是很好动、很活跃的一个人,在家里坐不住,经常往外跑。小时候喜欢的运动可多了,爬...
    庭谊阅读 343评论 2 2
  • ​最近,一套90后社交潜规则在朋友圈疯传,“能发文字不就发语音”,“洗澡不要一去不回”,“有事就直接说别问‘在吗’...
    运营狮训练营阅读 1,321评论 2 9