我们每天使用一些复杂度为O(1),O(n log n)和O(log n)的算法?
我们每天使用一些复杂度为O(1),O(n log n)和O(log n)的算法?
Answers:
如果您要使用问题中给出的具有时间复杂度的算法/语句组示例,请查看以下清单-
O(1)
时间O(n)
时间简而言之,所有需要线性的蛮力算法或Noob算法都基于O(n)时间复杂度
O(log n)
时间O(n log n)
时间通过考虑分而治之引入“ log n”因子。其中一些算法是最优化的算法,并且经常使用。
O(n^2)
时间如果存在它们的O(nlogn)对应物,则这些算法应该是效率较低的算法。此处的通用应用程序可能是蛮力。
O(log n)
列表切换为列表之前的O(n)
列表,以使列表按从好到坏的顺序排列。哈哈:)
O(1)-大多数烹饪程序都是O(1),也就是说,即使有更多的人要烹饪,也要花一定的时间(一定程度上,因为锅/锅可能空间不足并需要分开做饭)
O(登录)-在电话簿中查找某些内容。考虑二进制搜索。
O(n)-读一本书,其中n是页数。这是读书所需的最短时间。
O(nlogn)-无法立即想到某人每天可能做的某事,除非您通过合并或快速排序对卡片进行排序!
O(1):在国际象棋中找到最佳下一个动作(或就此而言,前进)。由于游戏状态的数量是有限的,所以只有O(1):-)
O(1)
O(1)
软件应用程序的复杂性没有度量,也没有用big-O表示法编写。仅用于测量算法复杂性并比较同一域中的算法才有用。最有可能的是,当我们说O(n)时,是指它是“ O(n)比较 ”或“ O(n)算术运算”。这意味着您无法比较任何一对算法或应用程序。
0(logn)-二进制搜索,数组中的峰元素(可以有多个峰)0(1)-用python计算列表或字符串的长度。len()函数需要0(1)时间。访问数组中的元素需要0(1)时间。堆栈中的推入操作需要0(1)时间。0(nlogn)-合并排序。在python中排序需要花费nlogn的时间。因此,当您使用listname.sort()时,它花费了nlogn的时间。
由于冲突,在哈希表中进行笔记搜索有时会花费比固定时间更多的时间。
O(2 N)
O(2 N)表示一种算法,每增加一个输入数据集,其增长量就会增加一倍。O(2 N)函数的增长曲线是指数的-从非常浅的位置开始,然后在气象上上升。O(2 N)函数的一个示例是斐波那契数的递归计算:
int Fibonacci (int number)
{
if (number <= 1) return number;
return Fibonacci(number - 2) + Fibonacci(number - 1);
}
Tower of Hanoi
会是一个更好的例子。