文档介绍:该【二路归并排序的研究 】是由【梅花书斋】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【二路归并排序的研究 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。【doc】二路归并排序的研究
二路归并排序的研究
'
(天津商孚哥系)
}}弓|7/
(天津纺织工军面丽学系)f.
..节彬予核心词三坚,垡,慧竺查焦皇L.,/g?'r ,得到【詈]个长量
;再将d这些
三统计的辅助存储空曲待排记拿二
一排良:二磊l原二路归并排序…一…压……………一 ;将
两个或两',……一
LTJLTjLTJI
LLrJ
L———1.——一
J
统计当作是n个有序的子链表,每个子链表 中只包含一种结点,先将每两个相邻的子链 袁归并,得到[等]个长度为2或l的有序子
链表:再将这些子链表两两归并,如此重复, 直到最后得到一长度为n的有序链表为止. 其中,将两个有序链表归并成一种新的
有序链表的操作,则是以修改指针值替代记 录的移动,并且为了简化操作和节省每个链
表的头指针,将归并后核心字最小的统计移 韧嫱状态r|
一
趟归并之后rs
二趟归并之后I毫
三趟归并之后
动至该段教组的第一种分量中. TYPEred=RECORD key:keytype;『核心字}
otheritem:anytype;i其它数
据项}
next:intege~{指针域}
ENDi
stli~ttp=ARRAY[1..n]OFred;
VARrs:;
下面给出新二路归并排序过程如表2所 示
寰2折=踌归并捧序示饿
1234567
I51I25578274IlOI5 —
uLL丁j
.
IL
l26I516782lOI74} —17}一I?
襄2=苷归并捧序示倒
下面用类PASCAL语言描述上述新二路归并捧序的过程,如算法(a).(b),(c)所示o
PROCmerge(VARrs:stlisttp;1,m,n:INTBGER):
(已知待归并的两有序链表分别寄存在rs【l-.m]和r喜[m+1..n】中,它们的第一种
结点分别存
放在1]和rs【m+1]中,本算法将它们归并为一种新的有序链表并寄存在rs【1..n]
中,该链
表的第一种结点寄存在1]中.}
n:=1;f2:m+1:jn,忽分别批示两有序链表的第一十结点I last:=1;Ilast批示新有序链表的最后一十结点f
IF[fl】.kets[】.kqTHEN.
41
mEf1]一r3【f2】;fl~f2:{交换统计并交换头指针} f2:=巧[f2].Ixext;{f2批示第二十有序链表的下一种结点} ELSE
n:;rs[f1],Ilext:{n批示第一种有序链表的下一种结点} WHILE(n()一1)and(f2()一1)DO
rs[n],key(=rs[f2],keyTHEN [rs[1ast].Ixext:=f1;last:=n:{将第一种链表的目前结点链人新键表 n:=rsEf1].~text]
]
ELSE
[rsFlast].next:/2;last:/2;j将第二个链表的目前结点链人新链表} f2:rs[f2].Ixext];
IFn<)一1THENrs[1est].Iaext:=fl; IFf2()一1THENrs[~t].1~Xt:=/2 {将rs[1..m]或rs[-m+1..n]中的多出统计链人有序链表} ENDP:
算法(a)两组归并
PROCmorgrpass(VARrs:stllsttp;11:INTEGER):
,本算法是通过一遍扫描,将rs中前后相邻且长度为11的有序链表进行两两归并,得到前后相
邻且长度为2ll的有序链表},
i:=1:
WHILEi(IX-2*11+1DO
[merge(rs,i,i+,i+2*11—1);
i:=i+2*11
];
IFi(n一11+1THENmerge(,i+I1—1,n)
ENDP;
算法(b)一趟归并
PROCmergsort(VARrs:stlisttp): {规定事先将rs【][1..n]中统计进行新二路
归并排序,得到一长度为n的有序链表,该链表的第一种结点寄存在rs[1]中} 11:=1:
REPEAT
m~():
11:2-ll
UNTIL11)=111
ENDP:算法(c)新二路归并排序
以上捧序的成果只是求得了一种有序链表,
42
:次序
法可查阅参考文献1,从该算法可得重捧记 录至多蒉进行了3(n一1)欢统计的移动,所 录的辅助存储空间.
3分析与比较
路归并排序的基本操作和原二路归并捧序基 本相似,仍是将两个相邻的有序序列归并成 一
针值替代统计的移动,并且每个链表不蒉附 两种排序算法进行分析和比较.
【l口bn]趟归并,每趟归并所蒉移动统计次数 为n; 以,原二路归并排序至多蒉移动统计nlogzn +(~og,n). 新二路归并排序也蒉进行[Ioe~n]趟归 【昔](其中i=i,2,…….【logan]).此排序a 过程至多蒉移动统计3(n一1)(=詈+{+'' 苦+……+1)欢; 录次数至多为3(n一1).因此,整个新二路 归并排序至多蒉移动统计6(n一1) 当n?2时,新二路归并排序将比原二路归 于排序过程中核心字间的比较次数不变,则 新二路归并捧序的时间复杂度仍为O ()o
从空间上看,原二路归并排序需n个记
捧序比原二路归并排序节省了n一1个统计
的辅助存储空间另外,新二路归并排序由
指针域的空间.
4结束语
本文提出了一种新二路归并排序算法.
此捧序算法的优越之处就在于它有较高的效
,其优越性更
加明显,但愿读者根据不同状况合适选用.
参考文献
1严蔚敏,吴伟民,数据构造,北京:清华
大学出版社,1992
;.Fundsments]s ofDamSU'uctur~.byPitmanPubIishing .
As1YON2一WAMERGES0RT
HungXi丑l噜LIWamgBtn窖
(Dept,0fComputerInformationEng.) Abstract:Tl~
thatthenewalgorit}unismoree岱cientandsavesnrdsassiststoragespace.
Keywords:|ststoragespace