提高了算法的时间复杂度
Improve the tempral complexity of the algorithm
我有一个简单的函数
bool function(int*a,int n)
{
for(int i = 0; i<=n-1;i++)
if(a[i]==i)
return true;
return false;
}
,其中a
为包含不同元素的排序向量,n为该向量的大小。
我需要提高这个算法的时间复杂度。我的第一个想法是使用二分查找,但我能想出如何让递归在这种情况下工作。基本上,该函数检查排序数组中是否存在索引与该元素相等的元素。
虽然没有给出完整的解决方案,但您在二进制搜索的正确轨道上。一些提示:
a[i]是递增的整数
如果a[i]在某一点大于i,对于a[j],当j> i时,这意味着什么?(与i+1相比,从a[i+1]开始)
同理,如果a[i] <a[j]表示j><我吗?>
把这些事实放在一起。当[i]与i"交叉"时,这意味着什么?你如何找到发生这种情况的地方?
相关文章:
- 为什么一种算法在相同的时间复杂度下比另一种算法更快?
- 如何降低 c++ 中算法的时间复杂度?
- 这个算法的运行时间复杂度是多少?你是如何分析的
- 如何证明以下算法具有 O(nlogn) 时间复杂度
- 三和算法的时间复杂度是多少
- 关于算法的时间复杂度
- 迭代算法的时间复杂度
- 最短路径的dijkstra算法的时间复杂度是否取决于所使用的数据结构?
- 这个算法的时间复杂度是多少
- 俄罗斯农民乘法算法的时间复杂度.
- 具有随机分量的算法的时间复杂度(吉莱斯皮算法)
- 编写算法以查找数组中最常出现的元素.给出算法的时间复杂度
- C++中strstr()函数的时间复杂度、空间复杂度和算法是什么
- 这种算法解决数独的时间复杂度是多少?
- 查找所有唯一二叉搜索树的算法的时间复杂度是多少?
- 二叉树之字形水平阶遍历的这种算法的时间复杂度是多少?
- 回文分区的这种算法的时间复杂度是多少?
- 这个算法获取所有单词梯的时间复杂度是多少?
- 此算法查找所有路径总和的时间复杂度是多少?
- 如何计算最小公元算法的时间复杂度?