【发布时间】:2018-01-13 03:42:34
【问题描述】:
我有任何数组,其中元素首先按升序排列,然后按降序排列
类似于 A[10]={1,4,6,8,3,2} ,数组中没有重复项。
如果输入是7,输出应该是,元素不存在。
时间复杂度应该比 O(n) 好
我通过线性搜索得到结果,将每个元素与找到的元素进行比较。但是因为我想要更好的解决方案然后 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";
}
}
【问题讨论】:
-
所以你尝试了一些东西。你的代码在哪里?
-
搜索二分法算法。它在 O(logN) 中完成这项工作。
-
您还可以构建二叉树并从内部搜索。它需要 O(logN)。二分法与二叉树的思想相同,而不仅仅是构建它。
-
我猜你想要一个代码来做到这一点。分享你在 O(n) 中做了什么。将代码添加到问题的正文中。
标签: c++ algorithm data-structures time-complexity