给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次,编写代码找出数组中的某个元素
来源:互联网 发布:网络攻击的主要方法 编辑:程序博客网 时间:2024/04/29 20:36
public int search(int a[],int left,int right,int x)
{
int mid=(left+right)/2;
if(x==a[mid])
{
return mid;
}
if(right<left)
return -1;
/*左半边或右半边必有一边是按正常顺序排列,
* 找出是那一半边,然后利用按正常顺序排列的半边,确定该搜索哪一边
*/
if(a[left]<a[mid])//左半边为正常排序
{
if(x>=a[left]&&x<=a[mid])
{
return search(left,mid-1,x);//搜索左半边
}
else
{
return search(a,mid+1,right,x);//搜索右半边
}
}
else if(a[mid]<a[left])//右半边为正常排序
{
if(x>=a[mid]&&x<=a[right])
{
return search(a,mid+1,right,x);//搜索右半边
}
else
{
return search(a,left,mid-1,x);//搜索左半边
}
}
else if(a[left]==a[mid])//左半边都是重复元素
{
if(a[mid]!=a[right])//若右边元素不同,则搜索那一边
{
return search(a,mid+1,right,x);//搜索右半边
}
else//否则,两边都得搜索
{
int result=search(a,left,mid-1,x);//搜索左半边
if(result==-1)
{
return search(a,mid+1,right,x);//搜索右半边
}
else
{
return result;
}
}
}
return -1;
}
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次,编写代码找出数组中的某个元素
- 9.11排序与查找(三)——给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
- 【Java】找出数组中的某个元素,数组原本有序,但已被旋转多次
- 程序员面试金典: 9.11 排序与查找 11.3找出已排序数组经过旋转后某个元素
- 一个具有N个元素的数组,找出数组中的第二大的数
- 一个有n个整数的递增有序数组。对它进行向左或向右循环移动若干次后,要求给出一个代码实现,尽可能快地从这个数组中寻找指定值所在的位置
- 中位数 21% 通过 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数
- 有一个整数数组,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,也就是说,找出符合条件的最短序列。 给定一个int数组A和数组的大小n,请
- N个元素的数组中找出出现多于N/2次的数(主元素)
- 给定一个含有n个元素的整型数组a,求a中的最大值和最小值。
- 给定一个整数n,和k,返回包含k个所有所有子数组
- leetcode-java.T016_threeSumClosest---给定包含n个整数数组S,找到S中的三个整数,从而使之和最接近给定的数,返回三个整数的总和.
- 【Java】有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- 求一个已排序旋转数组中的最小的数
- leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组
- 给定一个正整数和负整数组成的N*N矩阵,编写代码找出元素总和最大的子矩阵。
- 给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数,请在这个特殊数组中找出给定的整数
- linux系统IDE找不到Eigen
- VC6.0 ADO方式连接远程计算机的SQL Server 2000数据库的方法
- php学习--2
- 九度OJ 题目1141:Financial Management
- Java进程优雅关闭
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次,编写代码找出数组中的某个元素
- 贝叶斯-
- scrapy 报错 no module named win32api 的解决方案
- 九度OJ 题目1143:Primary Arithmetic
- $\LaTeX$中改变目录章节的编号为中文
- 那年我们一起去看海
- JVM内存
- 01 Design Pattern
- java线程同步实例