VBA排序的几种方法之插入排序-will.miao
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


VBA排序的几种方法之插入排序

发表时间:2012/6/19 9:12:52 评论(1) 浏览(7774)  评论 | 加入收藏 | 复制
   
摘 要:每天介绍一种排序方法
正 文:
插入排序算法思路
假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后

挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是

局部有序的,保证了插入过程的正确性.
算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2
代码如下:
Public Sub InsertionSort(ByRef lngArray() As Long)
    Dim iOuter As Long
    Dim iInner As Long
    Dim iLBound As Long
    Dim iUBound As Long
    Dim iTemp As Long
  
    iLBound = LBound(lngArray)
    iUBound = UBound(lngArray)
  
    For iOuter = iLBound + 1 To iUBound
      
        '取得插入值
        iTemp = lngArray(iOuter)
      
        '移动已经排序的值
        For iInner = iOuter - 1 To iLBound Step -1
            If lngArray(iInner) <= iTemp Then Exit For
            lngArray(iInner + 1) = lngArray(iInner)
        Next iInner
      
        '插入值
        lngArray(iInner + 1) = iTemp
    Next iOuter
End Sub

Access软件网交流QQ群(群号:198465573)
 
 相关文章
VBA排序的几种方法之选择排序  【缪炜  2012/6/18】
常见问答
技术分类
相关资源
文章搜索
关于作者

will.miao

文章分类

文章存档

友情链接