收藏 分销(赏)

合并排序.doc

上传人:仙人****88 文档编号:7926509 上传时间:2025-01-27 格式:DOC 页数:3 大小:27KB 下载积分:10 金币
下载 相关 举报
合并排序.doc_第1页
第1页 / 共3页
合并排序.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
Public Sub MergeSort(ByRef lngArray() As Long)     Dim arrTemp() As Long     Dim iSegSize As Long     Dim iLBound As Long     Dim iUBound As Long         iLBound = LBound(lngArray)     iUBound = UBound(lngArray)             ReDim arrTemp(iLBound To iUBound)         iSegSize = 1     Do While iSegSize < iUBound - iLBound                 '合并A到B         InnerMergePass lngArray, arrTemp, iLBound, iUBound, iSegSize         iSegSize = iSegSize + iSegSize                 '合并B到A         InnerMergePass arrTemp, lngArray, iLBound, iUBound, iSegSize         iSegSize = iSegSize + iSegSize             Loop End Sub Private Sub InnerMergePass(ByRef lngSrc() As Long, ByRef lngDest() As Long, ByVal iLBound As Long, iUBound As Long, ByVal iSegSize As Long)     Dim iSegNext As Long         iSegNext = iLBound         Do While iSegNext <= iUBound - (2 * iSegSize)         '合并         InnerMerge lngSrc, lngDest, iSegNext, iSegNext + iSegSize - 1, iSegNext + iSegSize + iSegSize - 1                 iSegNext = iSegNext + iSegSize + iSegSize     Loop         If iSegNext + iSegSize <= iUBound Then         InnerMerge lngSrc, lngDest, iSegNext, iSegNext + iSegSize - 1, iUBound     Else         For iSegNext = iSegNext To iUBound             lngDest(iSegNext) = lngSrc(iSegNext)         Next iSegNext     End If End Sub Private Sub InnerMerge(ByRef lngSrc() As Long, ByRef lngDest() As Long, ByVal iStartFirst As Long, ByVal iEndFirst As Long, ByVal iEndSecond As Long)     Dim iFirst As Long     Dim iSecond As Long     Dim iResult As Long     Dim iOuter As Long         iFirst = iStartFirst     iSecond = iEndFirst + 1     iResult = iStartFirst         Do While (iFirst <= iEndFirst) And (iSecond <= iEndSecond)             If lngSrc(iFirst) <= lngSrc(iSecond) Then             lngDest(iResult) = lngSrc(iFirst)             iFirst = iFirst + 1         Else             lngDest(iResult) = lngSrc(iSecond)             iSecond = iSecond + 1         End If                 iResult = iResult + 1     Loop         If iFirst > iEndFirst Then         For iOuter = iSecond To iEndSecond             lngDest(iResult) = lngSrc(iOuter)             iResult = iResult + 1         Next iOuter     Else         For iOuter = iFirst To iEndFirst             lngDest(iResult) = lngSrc(iOuter)             iResult = iResult + 1         Next iOuter     End If End Sub
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服