arrays - 我们如何根据运行时性能在两种排序算法之间切换?

标签 arrays algorithm sorting

我正在尝试编写一个程序,它将输入数组作为输入并对它进行排序。 排序将是这样的:

程序将开始使用下面提到的任何排序算法对数组的前 20% 进行排序。如果在 20% 之后,程序确定排序算法正在使用最坏情况时间,程序将切换到其他排序算法并继续使用该排序算法对数组进行排序。 我在这里面临的问题是如何知道排序算法是否在最坏情况下花费时间?

我将使用的排序算法是:

快速排序, 合并排序, 桶排序

我们将不胜感激。

最佳答案

“对数组的前 20% 进行排序”是什么意思?

我认为无论您指的是什么,都需要首先对数组进行排序,以便您可以检查数组的排序程度。那么如何在不必先对数组进行排序的情况下得出排序后的版本呢?这就像先有鸡还是先有蛋的问题。

回到您的主要问题,据我所知,大多数排序算法的运行时复杂度都是根据复制操作的数量来分析的。例如,插入排序需要很多复制操作,因为当你需要在正确的位置插入一个元素时,你必须移动元素。其他算法根据swap操作的个数来分析,也可以分解为3个copy操作。

但是,正如我上面提到的,我不知道如何将数组定义为 x% 排序,也不知道在没有排序数组的情况下如何衡量这种排序程度。

关于arrays - 我们如何根据运行时性能在两种排序算法之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39846413/

相关文章:

java - 按值对 LinkedList 进行排序

javascript - 如何将值转换为十六进制以在javascript中以数组形式发送

javascript - 不使用任何内置函数 trim 字符串左侧的空白

c# - 平衡客场和主场比赛算法

algorithm - 修改 Dijkstra 以在给定额外属性的情况下找到最优化的最短路径

javascript - knockout observableArray 排序未反射(reflect)在 UI 中(foreach 绑定(bind))

Javascript - 改进对象集合的排序

java - 在java中创建一个参差不齐/锯齿状的3d数组

C++ 声明一个带有大小函数的二维数组

algorithm - VBA Excel-返回数字或字符串的函数