摘要: 上一节末尾提到了一个问题,在顺序数组中找到t值第一次出现的位置。其实这也是一种二分搜索的变形。思路如下:我仍然使用l和u作为数组的边界值,t就包含在l和u指示的数组范围中。但不变关系式变为x[l]<t<=x[u]和l<u,此时,我们假设n>=0,x[-1]<t以及 x[n]>=t(程序中并没有这两个元素)。二分搜索的代码如下 1 int binarySearch(int a[],int n,int t)//n为a数组的长度,t为寻找的元素 2 { 3 4 if(n<=0) 5 { 6 return -1; 7 ... 阅读全文
posted @ 2012-12-16 20:15 helloyu 阅读(125) 评论(0) 推荐(0)
摘要: 编程珠玑中提到了 二分搜索,这也是各大公司面试和笔试的常考题,乍看一下此题很简单,用递归和循环都可以做出来,但是却隐藏了对程序员编写代码能力的考察,以及考虑事情范围的全面性。下面看一下二分搜索的循环代码 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;// 分析输入参数... 阅读全文
posted @ 2012-12-16 16:24 helloyu 阅读(190) 评论(0) 推荐(0)