我有任何数组,其中元素首先按升序排列,然后按递减顺序
与A [10] = {1,4,6,8,3,2}类似,数组中没有重复项。
如果输入为7,则输出应为,元素不存在。
时间复杂度应该优于O(n)
我通过线性搜索获得结果,将每个元素与b元素进行比较。但是因为我想要更好的解决方案,然后O(n)
我尝试通过找到数组元素翻转的数据透视表,然后从(0到数字元素)搜索,然后再搜索(最后一个数据来转动元素)。
请建议。 对于O(n)
#include<iostream>
int main()
{
int A[10]={1,4,6,8,3,2};
int i,num
cout<<"Enter the element to be searched";
cin>>num
for(i=0;i<10;i++)
{
If(A[i]==num)
{
cout<<"Element exist";
break;
}
else
cout<<"Element do not exist";
}
}
答案 0 :(得分:5)
<强>算法:强>
如何执行第1步?
修改强>
以防万一不清楚:如果你选择第n / 2个元素并且结果是最大值在左边,那么你选择第n / 4个元素,如果最大值在它的右侧,你只能继续搜索在n/4...n/2
元素范围内。