Algorithm 插入排序最坏情况运行时间
为什么在最坏的情况下,插入排序的运行时间复杂性是n(n-1)/2~n^2?将除法突出显示为2Algorithm 插入排序最坏情况运行时间,algorithm,insertion-sort,Algorithm,Insertion Sort,为什么在最坏的情况下,插入排序的运行时间复杂性是n(n-1)/2~n^2?将除法突出显示为2 运行时间不是n(n-1)/2,每个步骤需要超过1个 机器操作(在我所知道的所有机器中)。这就是为什么我们通常 在算法中使用和“忽略”常量 分析-我们希望使我们的分析具有通用性和平台性 独立的 插入排序分析为n(n-1)/2=O(n^2),因为它是 . 第一次迭代需要1 第二步,第二个2步,。。n'th需要n个步骤,因此我们得到1+2+…+n=n(n-1)/2来自算术级数之和 算法简介在第2.1章中详细介
n(n-1)/2
,每个步骤需要超过1个
机器操作(在我所知道的所有机器中)。这就是为什么我们通常
在算法中使用和“忽略”常量
分析-我们希望使我们的分析具有通用性和平台性
独立的n(n-1)/2=O(n^2)
,因为它是
. 第一次迭代需要1
第二步,第二个2步,。。n'th需要n个步骤,因此我们得到1+2+…+n=n(n-1)/2
来自算术级数之和最坏的情况是由于子阵列按相反的顺序切换造成的。我知道这已经永远关闭了,但我想为任何试图重温插入排序最坏情况背后的数学的人添加这一点。我发现了一个很好的解释n(n-1)/2公式的方法: 要评估以下各项的总和: 首先将其放入系列符号(称为s): 然后将其反向显示:
s = n-1+n-2+n-3+ ... 3 + 2 + 1
通过将每对数据相加,将s和s相加,得到:n+n+n+…n+n+n
或者换句话说,2s=n(n-1)
,因为你有n次,n-1次,你用了其中的两次才得到它
那么你只需要解一个不等式
2s=n(n-1)
,这个不等式就是s=n(n-1)/2
,我理解算术级数部分,但我不清楚2的除法在哪里合适?@user1475421第一次迭代是1步,第二次是2步,第三次是3步。。。第n步是n步,给你的总步数是1+2+3+…+n
步骤,其总和为n(n-1)/2
。你是在问为什么1+2+…+n
和n(n-1)/2
?我理解n(n-1)部分,但不理解/2部分在哪里?@user1475421:这是简单的数学。看一看:,它给出了一个如何计算级数之和的近似公式1+2++n
所以,我花时间读了你建议的那一章。。我甚至买了它。绝对物有所值。这一章没有明确说明为什么算术级数被2除?这只是一个简单的算术级数之和的结果,当高斯还是个孩子的时候,这是著名的算术级数之和。我们可以推导出这样的表达式:第一个和最后一个作为一对求和,然后将第二个和最后一个(但只有一个)求和为一对,以此类推。很明显,所有对的和都相等。将总和定义为s1。为了得到原始和,我们可以重复n次s1除以2,因为我们再重复一次原始和。
s = n-1+n-2+n-3+ ... 3 + 2 + 1