一个数组由递减数列左移若干位形成,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在数组中查找某数
来源:互联网 发布:js继承机制 编辑:程序博客网 时间:2024/06/14 09:27
首先观察数组的规律,虽然移动了,但按照二分的思想,仍然可以分为两 部分:一部分是有规律递减的,另一部分是没规律的(但可以看成原问题的子问题)。所以在寻找特定数时,可以判断是否在递减数列中(递减数列也分为左边或右边),如果存在则在递减数列中二分查找,如果不存在则递归的调用另外一半来进行查找。代码如下。
#include <iostream>using namespace std;int BinarySearchDe(int a[],int key,int beg,int end){int ret = -1;if( (a == NULL) || beg >end)return ret;while(beg<=end){int mid = (beg+end)/2;if(a[mid] == key)return mid;else if(key > a[mid]){end = mid-1;}else{beg = mid+1;}}return ret;}int searchArray(int a[],int key,int beg,int end){int ret = -1;if( (a == NULL) || beg>end)return ret;int mid = (beg+end)>>1;if( a[mid] == key)return mid;else if(a[beg] >a[mid]){if(key>a[mid] && key<=a[beg])return BinarySearchDe(a,key,beg,mid);elsereturn searchArray(a,key,mid,end);}else{if(key<a[mid] && key>=a[end])return BinarySearchDe(a,key,mid,end);elsereturn searchArray(a,key,beg,mid);}return ret;}int main(){int a[] = {1,6,5,4,3,2};cout<<searchArray(a,1,0,5)<<endl;cout<<searchArray(a,6,0,5)<<endl;cout<<searchArray(a,5,0,5)<<endl;cout<<searchArray(a,4,0,5)<<endl;cout<<searchArray(a,3,0,5)<<endl;cout<<searchArray(a,2,0,5)<<endl;system("PAUSE");return 1;}测试结果为:0,1,2,3,4,5
- 一个数组由递减数列左移若干位形成,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在数组中查找某数
- 48.微软: 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数
- 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5} 是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数
- 算法习题48:一个数组是由一个递减数列左移若干位形成的,在这种数组中查找某一个数。
- 48 一个数组是由一个递减数列左移若干位形成的,然后查找某一个数
- 写正确程序需要注意的地方:一个数组是有一个递减数列座椅若干位形成的,在这种数组中查找某一个数。
- 一个数组是由一个递减数列左移,查找一个数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
- 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5, 4,3,2}
- 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
- PKU Online Judge 1055:Tree
- [java]客户端从服务器下载文件
- android 记录手机操作行为并将其转换成gif图片
- PHP - 解决 php-cgi 启动时提示缺少 msvcr110.dll 的问题
- Iphone4越狱及无证书真机调试程序
- 一个数组由递减数列左移若干位形成,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在数组中查找某数
- structs升级步骤
- 1235 统计同成绩学生人数
- ISO 通过 NSLog 打印出%
- OCP-1Z0-052-V8.02-127题
- 第7周项目3-排序
- SSH框架学习(九、现在对SSH框架的理解)
- pdf file to txt file using pdfbox
- OCP-1Z0-052-V8.02-126题