查找算法—折半查找

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

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

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

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

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

具体代码实现如下:

                          // 用递归实现

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

posted @ 2017-12-17 14:48  未来的一片天0209  阅读(349)  评论(0编辑  收藏  举报