我正在为TI-Nspire编写函数,所以我无法在函数内部使用内置函数。在不修改列表本身的情况下,对数字列表进行排序的最常用效率算法是什么? (递归和列表拆分是公平的游戏,因为通常使用数学。)
答案 0 :(得分:3)
Mergesort简单,简单,高效且稳定:拆分列表,递归排序,并合并结果。
更具体地说,mergesort采用渐近最优的O(N log N)。此外,在实践中(两种算法都经过修改以对具有特殊目的排序的短子列表进行排序),mergesort可以成为C / C ++标准库中使用的修改后的快速排序的紧密竞争者。
编辑:与快速排序和插入排序等就地排序不同,mergesort需要辅助内存,并且最简单的方法是通过复制而不是交换来实现。
答案 1 :(得分:0)