插入排序的最坏时间复杂度为Θ(n2)对一个长度为k的子表进行排序需要最坏需要Θ(k2)时间,那么排序
归并排序先对数组进行对半拆分需要拆分Θ(log2?n)次,现在当拆分到数组的長度为k时停止拆分,然后使用插入排序对这n/k个子数组进行排序然后归并排序开始合并,所以拆分的次数从
第2 ~ 4行代码的作用是把小的元素与上一个元素交换直到循环终止,最小的元素在
- 初始化:在未进行迭代之前最尛元素最多位于
A′[n]上,该结论为真
- 保持:在每次迭代,如果当前元素比上一个元素小便交换其位置,如果大便什么都不做。所以在苐
k次迭代之后都可以确定最小元素的位置至多在
- 终止:在循环结束时,也就是
k=n?i最小元素在
- 初始化:在迭代之前,子数组为
A′[1...i?1]此時子数组包含0个元素。
k次迭代后根据
b的结论,第
A′[k]的位置上所以在第
k+1次迭代之前,子数组
A′[1...k]是有序的然后此次迭代之后,子数组
i=n?1時循环终止,此时子数组
A′[n]小所以该数组有序。
冒泡排序中2 ~ 4行代码无论如何都需要进行
n?i次循环,所以时间复杂度为
Θ(n)而且必需進行
n次循环,所以他的时间复杂度为
Θ(n2)冒泡排序是稳定性的排序,其最坏时间复杂度与最好时间复杂度都为
Θ(n2)而插入排序的最好时间複杂度为
实现以上代码片段的运行时间为
0
0
i次方,也就是每次循环需要
i+1次乘法跟一次加法一共要进行
n+1次循环,所以其运行时间为
Θ(n2)与霍納规则相比,朴素算法的每次迭代都要比霍纳规则多
i次乘法因为朴素算法要求
xi,所以其性能要比霍纳算法差得多
0
0
0
0
0
0
所以在下次循环开始時,也有:
0
**终止:**当循环终止时有
}
插入排序的最坏时间复杂度为
Θ(n2)对一个长度为
k的子表进行排序需要最坏需要
Θ(k2)时间,那么排序
归并排序先对数组进行对半拆分需要拆分
Θ(log2?n)次,现在当拆分到数组的長度为
k时停止拆分,然后使用插入排序对这
n/k个子数组进行排序然后归并排序开始合并,所以拆分的次数从
Θ(log2?n/k)合并的时间复杂度为
Θ(n),所以总时间复杂度为
第2 ~ 4行代码的作用是把小的元素与上一个元素交换直到循环终止,最小的元素在
- 初始化:在未进行迭代之前最尛元素最多位于
A′[n]上,该结论为真
- 保持:在每次迭代,如果当前元素比上一个元素小便交换其位置,如果大便什么都不做。所以在苐
k次迭代之后都可以确定最小元素的位置至多在
- 终止:在循环结束时,也就是
k=n?i最小元素在
- 初始化:在迭代之前,子数组为
A′[1...i?1]此時子数组包含0个元素。
k次迭代后根据
b的结论,第
A′[k]的位置上所以在第
k+1次迭代之前,子数组
A′[1...k]是有序的然后此次迭代之后,子数组
i=n?1時循环终止,此时子数组
A′[n]小所以该数组有序。
冒泡排序中2 ~ 4行代码无论如何都需要进行
n?i次循环,所以时间复杂度为
Θ(n)而且必需進行
n次循环,所以他的时间复杂度为
Θ(n2)冒泡排序是稳定性的排序,其最坏时间复杂度与最好时间复杂度都为
Θ(n2)而插入排序的最好时间複杂度为
实现以上代码片段的运行时间为
0
0
i次方,也就是每次循环需要
i+1次乘法跟一次加法一共要进行
n+1次循环,所以其运行时间为
Θ(n2)与霍納规则相比,朴素算法的每次迭代都要比霍纳规则多
i次乘法因为朴素算法要求
xi,所以其性能要比霍纳算法差得多
0
0
0
0
0
0
所以在下次循环开始時,也有:
0
**终止:**当循环终止时有
}