Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 1.6 KB

File metadata and controls

42 lines (27 loc) · 1.6 KB

外排序

所谓外排序,顾名思义,即是在内存外面的排序。 因为当要处理的数据量很大,而不能一次装入内存时,此时只能放在读写较慢的外存储器(通常是硬盘)上。 时间复杂度 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()这样的写法并不准确,知道在什么情况下表示什么就可以了,写的时候最好加上底数。