二分搜索

      编程珠玑中提到了 二分搜索,这也是各大公司面试和笔试的常考题,乍看一下此题很简单,用递归和循环都可以做出来,但是却隐藏了对程序员编写代码能力的考察,以及考虑事情范围的全面性。

下面看一下二分搜索的循环代码

 1 int binarySearch(int low , int high,int z,int a[])
 2     {
 3         
 4                   if((low>high)||low<0||high<0)
 5                   {
 6                            return -1;// 分析输入参数的各种错误
 7 
 8                     }
 9                                while (low <= high)
10         {
11             int mid = (low + high) / 2;
12             if (a[mid]< z)
13             {
14                 low = mid + 1;
15             } 
16                                                 else if (a[mid] > z)
17             {
18                 high = mid - 1;
19             } 
20                                                 else
21             {
22                 return mid;
23             }
24         }
25         return -1;
26     }

但是,编程珠玑里面留了一个问题给大家,见习题4.6 的第二题,大意是这样,如果我们查找的元素在数组里面存在多个,那么如何查询此元素出现的第一个位置?

原文地址:https://www.cnblogs.com/fightingxu/p/2820605.html