Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 最好的分类方法是什么?_Algorithm_Sorting_Big O - Fatal编程技术网

Algorithm 最好的分类方法是什么?

Algorithm 最好的分类方法是什么?,algorithm,sorting,big-o,Algorithm,Sorting,Big O,问题, 您必须按日期对一系列银行交易进行排序。大多数 (截止日期)正常,只有少数故障 在插入排序和选择之间使用哪种排序算法 排序和合并排序,以利用 数组几乎已排序 我的答案(不确定是否正确) 假设N>=5,我将使用合并排序,因为它的平均时间复杂度为O(N*logn),这将比插入排序O(N^2)更有效。但是,由于多个事务将在同一日期进行,因此插入排序将是一种很好的稳定排序方法 在这种情况下,哪一个更好?合并还是插入排序?我的方向正确吗?您应该选择插入排序,这不是因为稳定性,而是因为它是自适应的(请

问题,

您必须按日期对一系列银行交易进行排序。大多数 (截止日期)正常,只有少数故障

在插入排序和选择之间使用哪种排序算法 排序和合并排序,以利用 数组几乎已排序

我的答案(不确定是否正确)

假设N>=5,我将使用合并排序,因为它的平均时间复杂度为O(N*logn),这将比插入排序O(N^2)更有效。但是,由于多个事务将在同一日期进行,因此插入排序将是一种很好的稳定排序方法


在这种情况下,哪一个更好?合并还是插入排序?我的方向正确吗?

您应该选择插入排序,这不是因为稳定性,而是因为它是自适应的(请参阅),并且由于输入几乎从一开始就已排序,因此性能会更好


这种“自适应”特征的含义是,已经就位的元素在O(1)时间被处理,非常接近其排序位置的元素也可以被视为O(1)(最长可达k个距离)。

您应该选择插入排序,不是因为稳定性,而是因为它是自适应的(请参阅)而且,由于输入几乎是从一开始就被排序的,因此它的表现会更好

这种“自适应”特征的含义是,已经就位的元素在O(1)时间被处理,非常接近其排序位置的元素也可以被视为O(1)(高达某个k距离)