我们有3种Merge排序方式。
是否有这些自适应算法?例如,如果数组已排序,则它们将利用排序顺序。
据我所知,无论数组是否排序,合并排序仍然会进行比较然后合并。所以,答案是这些都不适应。
我的理解是否正确?
答案 0 :(得分:2)
自然合并排序 自适应。例如,它只通过有序数组执行一次运行并进行N次比较。
自上而下和自下而上的排序都不是自适应的,它们总是进行O(NlogN)操作
答案 1 :(得分:0)
Merge Sort是一种分而治之算法的实现。您需要将整个数组划分为子数组。例如 [1,3,5,6,2,4,110]分为[1 3 5 6]和[2 4 1 10]。 [1 3 5 6]分为[1 3]和[5 6]。现在,由于[1 3]和[5 6]都是排序的,因此不需要交换过程。
如果对数组进行排序,那么至少会有一点复杂性
答案 2 :(得分:0)
根据我的意思,无论数组是否排序,合并排序仍会进行比较
如果输入尚未排序或包含有关要遵循的排序过程的信息,我认为没有任何比较可以排序并节省内存。最快的排序算法是时间复杂度O(n log(n))(有排序技术,如珠子排序。我不在考虑它,因为它不是最佳的方法记忆副)
P.S快速排序确实涉及比较(但是是自适应的),并且在更糟糕的情况下它进行O(n ^ 2)比较。
P.P.S基数排序,计数排序和桶排序是自适应排序的一些例子;