本文介绍: 所谓“归并”,是将两个或两个以上的有序文件合并成为一个新的有序文件。归并排序的一种实现方法是把一个有n个记录的无序文件看成是由n个长度为1的有序子文件组成的文件,然后进行两两归并.
所谓“归并”,是将两个或两个以上的有序文件合并成为一个新的有序文件。归并排序的一种实现方法是把一个有n个记录的无序文件看成是由n个长度为1的有序子文件组成的文件,然后进行两两归并,得到[
n
2
frac n2
2n]个长度为2或1的有序文件,再两两归并,如此重复,直到最后形成包含 n 个记录的有序文件为止。这种反复将两个有序文件归并成一个有序文件的排序方法称为两路归并排序。
两路归并排序的核心操作是将一维数组中前后相邻的两个有序序列归并为一个有序序列。
【算法】将分别有序的 data[s…m]和 data[m+1…n]归并为有序的data[s…n]。
一趟归并排序的操作是:调用[n/2h]次 Merge 算法,将数组 data1[0…n-1]中前后相邻且长度为h的有序段进行两两归并,得到前后相邻、长度为 2h 的有序段,并存放在 data2[0…n-1]中,整个归并排序需进行[log2n]趟。归并排序需要辅助空间n个(与待排记录数量相等),时间复杂度为O(nlogn)。
【算法】递归形式的两路归并。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。