请输入您要查询的百科知识:

 

词条 并归排序法
释义

归并就是将多个已排序的数列合成一个有序的数列。将两个有序序列合并为一个有序序列叫二路归并(merge)。归并排序就是利用"归并"技术来进行排序n长度为1的子序列,两两归并最后变为有序的序列。

一、两路归并算法

1、算法基本思路

设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为A[l..m],A[m+1..h],将它们归并为一个有序数列,并存储在A[l..h]。

为了减少数据移动次数,不妨采用一个临时工作数组C,将中间排序结果暂时保存在C数组中,等归并结束后,再将C数组值复制给A。

归并过程中,设置p1,p2和p3三个指针,其初值分别指向三个有序区的起始位置。归并时依次比较A[p1]和A[p2]的关键字,取关键字较小的记录复制到C[p3]中,然后将被复制记录的指针p1或p2加1,以及指向复制位置的指针p3加1。

重复这一过程直至有一个已复制完毕,此时将另一序列中剩余数据依次复制到C中即可。

2)(1)自底向上的基本思想

自底向上的基本思想是:第1趟归并排序时,将数列A[1..n]看作是n个长度为1的有序序列,将这些序列两两归并,若n为偶数,则得到[n/2]个长度为2的有序序列;若n为奇数,则最后一个子序列不参与归并。第2趟归并则是将第1趟归并所得到的有序序列两两归并。如此反复,直到最后得到一个长度为n的有序文件为止。

上述的每次归并操作,均是将两个有序序列合并成一个有序序列,故称其为“二路归并排序”。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/16 13:46:54