3

我正在为TI-Nspire编写函数,所以我不能从函数内部使用内置函数。在不修改列表本身的情况下对数字列表进行排序的最有效算法是什么?(递归和列表拆分是公平的游戏,数学的一般用途也是如此。)

4

2 回答 2

3

Mergesort 直接、简单、高效、稳定:拆分列表、递归排序、合并结果。

更具体地说,归并排序采用 O(N log N),这是渐近最优的。此外,在实践中(两种算法都被修改为使用特殊目的排序对短子列表进行排序),合并排序可以成为 C/C++ 标准库中使用的修改后的快速排序的有力竞争者。

编辑:与快速排序和插入排序等就地排序不同,合并排序需要辅助内存,并且通过复制而不是交换来实现最简单。

于 2010-05-18T21:34:16.043 回答
0

Timsort在 python 和 java SE 7 中使用。它充分利用了合并排序和插入排序。插入排序是 O(n^2),但是对于小数字列表,它比合并排序更快!

因此,您可以将其用作此处所述的通用排序算法

于 2010-05-18T22:13:18.653 回答