【发布时间】:2018-01-02 19:14:10
【问题描述】:
我一直在比较选择和插入排序。据我所知,插入排序在反转计数上起作用,而取决于它。但在最坏的情况下,总反转计数将是最大的,并且在插入排序中,交换的数量将是最大/大于选择排序,因为在选择排序中,总交换总是输入大小“n”的顺序,并且不超过那个而且会比插入排序小很多。
在最坏的情况下,时间复杂度将取决于比较次数(在选择排序中相等或更少)和交换次数(在插入排序中更多)。 因此,如果交换/写入更快,我可以使用插入排序,但如果与比较相比写入成本更高,那么我将使用选择排序。 那么,在最坏的情况下哪种排序算法会更好,如果我使用数组作为数据结构,如何确定比较速度更快或复制速度更快。
【问题讨论】:
-
如果你用大 O 表示法询问时间复杂度,那么复制/比较的速度是一个常数,所以应该忽略,你会发现它们都同样复杂 (
O(n^2))。如果您要询问“实际”效率,即在真实计算机上的运行速度方面,那么您需要在要运行这些算法的计算机上对其进行分析。 -
假设我使用同一台计算机对它们进行排序,那么插入或选择哪个更快?在最坏的情况下相同的输入?
-
这取决于你运行它们的计算机、你使用的语言、你在编译器中启用的优化、你编写代码的好坏等等。这就是为什么你必须做实际的按照@hnefatl 的建议进行分析。
-
@TusharBhaskar 如有任何疑问。
标签: arrays algorithm performance sorting