如果精确排序,当然需要将所有数据查看一遍(O(n)),但有一个捷径,可以在将数据读入时存入一些数据结构,这些数据结构存储好后数据就是排序好的(O(1)),但这样有时候会增加空间复杂度。
比如多路归并时,对于多路拿出来的数据可以存入二叉树等数据结构。
有时候逆向思维可以减少空间复杂度。
比如二路归并时,如果一个n个数据,一个m个数据,但存m个数据的数组有m+n的空间,都是顺序,可以逆向归并,可以减少对空间复杂度。
排序时,问最快,内存最少,可以考虑位排序。不过一般面试问的题目都有限制条件,根据限制条件可以设置出特定的算法,一般时间是O(n),空间是O(1).