Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

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

时 间:2012-06-19 09:12:52
作 者:缪炜   ID:24010  城市:江阴
摘 要:每天介绍一种排序方法
正 文:

插入排序算法思路
假定这个数组的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后

挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前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交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助