在Sedgewick & et al.的算法第4版第296页中,作者写道:
截止值 M 的最佳值取决于系统,但在大多数情况下,5 到 15 之间的任何值都可能效果良好。
但是我不明白截止值依赖于系统是什么意思,因为算法的性能的衡量标准是它执行的操作数,而不是与计算机处理器的速度无关?
在Sedgewick & et al.的算法第4版第296页中,作者写道:
截止值 M 的最佳值取决于系统,但在大多数情况下,5 到 15 之间的任何值都可能效果良好。
但是我不明白截止值依赖于系统是什么意思,因为算法的性能的衡量标准是它执行的操作数,而不是与计算机处理器的速度无关?
我有 1984 年出版的第二版。在第 112 页的“小子文件”标题下,有关于快速排序的讨论:
这里有几点。
你说得对:算法的性能是根据它执行的操作数量来衡量的,而不是根据处理器的速度来衡量的。
正如我在回答类似问题时所解释的那样,与插入排序相比,快速排序是一种非常复杂的算法。它涉及相当大的簿记开销。也就是说,无论排序的子数组有多大或多小,快速排序都有一定的固定成本。随着数组变小,开销所占的时间百分比会增加。
插入排序是一种非常简单的排序算法。记账开销非常小。对于小数组,插入排序可能比快速排序更快,因为当数组非常小时,插入排序实际上执行的操作比快速排序少。变化(如文本所述,从 5 到 25)取决于确切的算法实现。
Sedgewick 的书与许多其他算法教材一样,经常模糊理论与实践之间的界限。我认为把实践放在心上是件好事,但作者应该在谈论实际性能和理论性能时说清楚,或者讲师应该在课堂上澄清这一点。