欢迎来到天天文库
浏览记录
ID:47254400
大小:33.78 KB
页数:18页
时间:2019-08-31
《VBA排序的十种算法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、.在使用VBA进行写程序时,经常会做排序,下面将会给出一些常用的排序算法的实现,方便大家写程序参考,若代码中出现了错误,欢迎高手指正。主要算法有:1、(冒泡排序)Bubblesort2、(选择排序)Selectionsort3、(插入排序)Insertionsort4、(快速排序)Quicksort5、(合并排序)Mergesort6、(堆排序)Heapsort7、(组合排序)CombSort8、(希尔排序)ShellSort9、(基数排序)RadixSort10、ShakerSort第一种(冒
2、泡排序)BubblesortPublicSubBubbleSort(ByReflngArray()AsLong)DimiOuterAsLongDimiInnerAsLongDimiLBoundAsLongDimiUBoundAsLongDimiTempAsLongiLBound=LBound(lngArray)iUBound=UBound(lngArray)'冒泡排序ForiOuter=iLBoundToiUBound-1ForiInner=iLBoundToiUBound-iOuter-1'比
3、较相邻项IflngArray(iInner)>lngArray(iInner+1)Then'交换值iTemp=lngArray(iInner)lngArray(iInner)=lngArray(iInner+1)lngArray(iInner+1)=iTempEndIf..NextiInnerNextiOuterEndSub2、(选择排序)Selectionsort1.PublicSubSelectionSort(ByReflngArray()AsLong)2.DimiOuterAsLong3.
4、DimiInnerAsLong4.DimiLBoundAsLong5.DimiUBoundAsLong6.DimiTempAsLong7.DimiMaxAsLong8.9.iLBound=LBound(lngArray)10.iUBound=UBound(lngArray)11.12.'选择排序13.ForiOuter=iUBoundToiLBound+1Step-114.15.iMax=016.17.'得到最大值得索引18.ForiInner=iLBoundToiOuter19.IflngAr
5、ray(iInner)>lngArray(iMax)TheniMax=iInner20.NextiInner21.22.'值交换23.iTemp=lngArray(iMax)24.lngArray(iMax)=lngArray(iOuter)25.lngArray(iOuter)=iTemp26.27.NextiOuter..1.EndSub复制代码第三种(插入排序)Insertionsort1.PublicSubInsertionSort(ByReflngArray()AsLong)2.Dim
6、iOuterAsLong3.DimiInnerAsLong4.DimiLBoundAsLong5.DimiUBoundAsLong6.DimiTempAsLong7.8.iLBound=LBound(lngArray)9.iUBound=UBound(lngArray)10.11.ForiOuter=iLBound+1ToiUBound12.13.'取得插入值14.iTemp=lngArray(iOuter)15.16.'移动已经排序的值17.ForiInner=iOuter-1ToiLBoun
7、dStep-118.IflngArray(iInner)<=iTempThenExitFor19.lngArray(iInner+1)=lngArray(iInner)20.NextiInner21.22.'插入值23.lngArray(iInner+1)=iTemp24.NextiOuter25.EndSub复制代码..第四种(快速排序)Quicksort1.PublicSubQuickSort(ByReflngArray()AsLong)2.DimiLBoundAsLong3.DimiUBo
8、undAsLong4.DimiTempAsLong5.DimiOuterAsLong6.DimiMaxAsLong7.8.iLBound=LBound(lngArray)9.iUBound=UBound(lngArray)10.11.'若只有一个值,不排序12.If(iUBound-iLBound)Then13.ForiOuter=iLBoundToiUBound14.IflngArray(iOuter)>lngArray(iMax)TheniMax=iOuter15.NextiOuter16.
此文档下载收益归作者所有