查找算法—折半查找

Posted 未来的一片天0209

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找算法—折半查找相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

具体代码实现如下:

                          // 用递归实现

                           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).

以上是关于查找算法—折半查找的主要内容,如果未能解决你的问题,请参考以下文章

C语言折半查找法

查找算法之折半查找+分块查找

C语言二分查找算法,折半查找算法

C语言折半查找之递归算法

C语言折半查找法详细代码(假如有10个已排好序的数)

用递归法写一个折半查找的算法