采用二分查找
#include <iostream>
using namespace std;
int binarySearch(int *a,int first,int last,int value)
{
int mid = first + (last-first)/2;
if(a[mid] == value)
return mid;
else if(a[mid]<value)
{
return binarySearch(a,0,mid,value);
}
else
{
return binarySearch(a,mid+1,last,value);
}
}
int find(int *a,int len ,int value)
{
int first = 1;
for(;first<len;first++)
{
if(a[first]<a[0])
{
if(a[first] == value)
return first;
first++;
}
else
{
break;
}
}
if(value == first)
{
return first;
}
else if(value >first)
{
return binarySearch(a,first+1,len,value);
}
else
{
return binarySearch(a,0,first,value);
}
}
int main()
{
int a[] = {4,3,2,1,6,5};
cout<<find(a,6,3)<<endl;
return 0;
}
分享到:
相关推荐
给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元 素的情况下,该数组能否变成一个非递减数列。非递减数列定义如下:对 于数组中所有的 i (1 ),满足 array[i] [i + 1]
一个数组是由一个递减数列左移若干位形成,比如{4, 3, 2, 1, 6, 5}是由{6, 5, 4, 3, 2, 1}左移两位,在这种数组中查找某一个数。 实现代码如下: int array[] = {4, 3, 2, 1, 6, 5}; const int size = sizeof array...
# 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 # 输入示例 # 输入:nums = [-4,-1,0,3,10] # 输出:[0,1,9,16,100] # 解释:平方后,数组变为 [16,...
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之...例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路参考博客
力扣热题Python源代码 题目34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。... nums 是一个非递减数组 -109 <= target <= 109
详细介绍最长递减子设有一个整数序列A1, A2, ... An,求这个序列中最长的递减子序列的长度M, 以及该序列可以划分成这种子序列的个数N 如序列: 300 250 252 275 200 138 245 折分成的子序列分别为 300 275 200 138 ...
Sologala @github [665]非递减数列| non-decreas
判断数据递增的方法,递归算法,简单明了 快速高效
给定两个已排序的整数数组nums1和nums2,将nums2合并为nums1作为一个已排序的数组。 在nums1和nums2中初始化的元素数分别为m和n。 您可以假定nums1的大小等于m + n,以使其具有足够的空间来容纳nums2中的其他元素。...
题目把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素NOTE:给出的所有元素都大于0,若数
另一方面如图所示,当失序的时候有两种调整方案:采 用 方 案 1 前 提 条 件 为 nums[low+1]>=nums[low-1], 采 用 方 案 2 前
// 给定一个正整数N, 其中 // N = A1 + A2 + ... + An 其中A1, A2, ..., An...// -> 斐波那契数列的值为: 1, 1, 2, 3, 5, 8, 13, 21, 34, .... // Ex input 11 -> output [8, 3] // Ex input 31 -> output [21, 8, 2]
对一个含有N整数的数组,使用堆排序让其由小到大输出 样例输入 6 43 2 56 1 22 9 样例输出 1 2 9 22 43 56 堆排序 对一个含有N整数的数组,使用堆排序让其由小到大输出 样例输入 6 43 2 56 1 22 9 样例输出 1 2 9 ...
两个升序的数组A、B,将AB合并到C,保持升序,去除重生的元素
c语言 c语言编程题之数组操作非递减序列
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 又例如{1,0,1,1,1}和{1,1,1,0,1}都可以看成是递增排序数组{0,1,1,1,1}的旋转,该数组的最小值为0。 菜鸡与大佬的对话 题目分析 菜鸡拿到...
判断字符串或者密码是不是连续递增的如1234567 7654321 abcdefg 之类的
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 解题思路一:二分查找 class Solution: def minNumberInRotateArray(self, rotateArray...
3 由方法返回一个数组6-11-4 把数组当参数传递6-12 命令提示符参数第7章面向对象程序设计7-1 面向对象的缘由7-1-1 增加程序代码重复使用7-1-2 原始程序代码共用阶段7-2 类7-3 名称空间7-4 降低维护的负担7-...