所谓外排序,顾名思义,即是在内存外面的排序。 因为当要处理的数据量很大,而不能一次装入内存时,此时只能放在读写较慢的外存储器(通常是硬盘)上。 时间复杂度 O(n log n)
归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。 归并排序算法依赖归并操作。
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 若将两个有序表合并成一个有序表,称为二路归并。
| 参数对比 | 双端队列 | 列表 |
|---|---|---|
| 数据操作 | 头部,尾部 | 任意部位 |
| 时间复杂度 | O(1) | O(n) |
为了降低时间复杂度,这里采用双端队列作为存储结构
递归拆分的时间复杂度是log n
进行两个有序数组排序的方法复杂度是n
整体复杂度为 O(n log n)
6 5 3 1 8 7 2 4
对数无论什么时候都必须有底数,底数为10时log10()可写为lg(),底数为e时loge()可写为ln() 但也有些时候会看见直接写成log()的, 这种情况下的底数:一般普通应用都是10, 计算机学科是2,编程语言里面是e; 当然log()这样的写法并不准确,知道在什么情况下表示什么就可以了,写的时候最好加上底数。