一个算法在特定输入上的运行时间是指执行的基本操作或步数量。
简单来说就是执行每行()伪代码所需演的时间(
)。
接下来看下面这段伪代码
| 行 | 代码 | 代价 | 次数 |
| 1 | for j = 2 to A.length | n | |
| 2 | key = A [ j ] | n-1 | |
| 3 | //Insert A [ j ] into the sorted sequence A [ 1 . . j - 1 ] | 0 | n-1 |
| 4 | i = j - 2 | n-1 | |
| 5 | while i > 0 and A [ i ] > key | ||
| 6 | A [ i + 1 ] = A [ i ] | ||
| 7 | i = i - 1 | ||
| 8 | A[i+1] = key | n-1 |
即运行时间为T(n) =
若输入数组已经排好序,则出现最佳情况
该运行时间表示为an+b
若输入数组已反向排序,则导致最坏情况。此时
该运行时间表示为a+bn+c
接着我们做一些更简化的抽象,我们真正感兴趣的是运行时间的增长率或增长量级。所以我们只考虑公式中最重要的项(例:a),因为当n很大时,低级项相对来说不那么重要。
所以我们记插入排序的最坏运行时间O()
本文深入探讨了插入排序算法的运行时间分析,通过伪代码详细解释了在不同输入条件下的最佳和最坏情况时间复杂度。重点在于理解运行时间的增长率及如何简化表达。
344

被折叠的 条评论
为什么被折叠?



