码迷,mamicode.com
首页 > 编程语言 > 详细

查找算法—折半查找

时间:2017-12-17 15:55:25      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:sof   return   算法思想   arc   pre   顺序   算法   二分查找   div   

折半查找,又称为二分查找,它的前提是线性表中的记录必须是关键码有序(通常是从大到小),线性表必须采用顺序存储。

算法思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;

                  若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;

                  若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。

                  不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。

具体代码实现如下:

                          // 用递归实现

                           int  binarySearch(int[] arr ,int start ,int end,int key){

          int mid = (start+end)/2;

                                    if(key == arr[mid]){

            return mid;

          }

          if(start>=end){

            return -1;

          }else if (key > arr[mid]) {

            return binarySearch(arr, mid + 1, end, key);

                                    } else if (key < arr[mid]) {

                                          return  binarySearch(arr, start, mid - 1, key);
           }

        return -1;

                          }

折半查找的时间复杂度为o(logn).

查找算法—折半查找

标签:sof   return   算法思想   arc   pre   顺序   算法   二分查找   div   

原文地址:http://www.cnblogs.com/lizh0209/p/8052094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!