Algorithm 排序算法的时间复杂度
关于时间的复杂性,我有两个问题 1) 我似乎还没有掌握大oh或landau的符号。我知道它是用来表示时间复杂度的,但是为什么我不能说最坏情况下的时间复杂度,比如说,冒泡排序是n^2,而不是O(n^2) 2) 为什么日志会在一段时间内变得复杂?例如,shell sort O(nlogn)最坏情况下的时间复杂度究竟是什么 除了维基百科之外,任何关于这些事情的好网站都将受到赞赏Algorithm 排序算法的时间复杂度,algorithm,big-o,Algorithm,Big O,关于时间的复杂性,我有两个问题 1) 我似乎还没有掌握大oh或landau的符号。我知道它是用来表示时间复杂度的,但是为什么我不能说最坏情况下的时间复杂度,比如说,冒泡排序是n^2,而不是O(n^2) 2) 为什么日志会在一段时间内变得复杂?例如,shell sort O(nlogn)最坏情况下的时间复杂度究竟是什么 除了维基百科之外,任何关于这些事情的好网站都将受到赞赏 Big-O表示法用于表示您正在谈论的是渐近行为这一事实。如果您只是编写n^2,则可能会假定您正在谈论特定程序的实际运行时(即
n^2
,则可能会假定您正在谈论特定程序的实际运行时(即,您可以直接从该表达式在几秒钟内获得运行时)。但是在实践中,您的运行时的形式是a.n^2+b.n+c.log(n)+d
。Big-O表示法允许您忽略所有的低阶项,因为当n
走向无穷大时,只有n^2
项才重要O(n logn)
。但是log
通常在某些东西被连续分成两部分时出现(例如,想想平衡二叉树的高度)这个(以及上面同一个网站中的其他数学内容)将从根本上揭开e、log、ln、d/dx、Big-O、增长率等与现实世界相关的许多实际内容的神秘面纱。你应该知道这两种说法之间的区别:
这个网站让你非常清楚什么是复杂性。还有维基百科有什么问题吗?我会给你一个+1的答案,因为当你分析算法时,有一个像你这样的问题是很自然的。我不知道为什么有些人开始投“-”票。作者发帖的目的很清楚,他想了解日志内容是从哪里来的,以及在计算时间复杂性时它是如何来的。UmNyobe,我知道我会得到答案的,但我需要解释,因此我问。维基百科有时很模糊@Yavar,谢谢你对我的情况的理解。从这个网站上看:shell排序的最坏情况时间复杂度取决于递增序列。对于此处使用的增量1 4 13 40 121…,时间复杂度为O(n3/2)。对于其他增量,时间复杂度已知为O(n4/3)甚至O(n·lg2(n))。时间复杂度的严格上界和最佳增量序列都未知。