全民一起VBA实战篇 专题2 第二回 选择法轻松上手,双循环巧妙排序

 

相关知识点:

选择排序法:在剩余数字中找出一个最大的数字,填入第一个空白方格里,如此反复,直到没有剩余数字。缺点是运行效率太低

其他方法:堆排序,基数排序,快速排序,希尔排序,桶排序,归并排序,二叉树排序

application.ScreenUpdating=False关闭屏幕刷新提高运行效率,恢复刷新=True

Range.Sort: 内置的排序方法

例1按照GDP对国家进行排名,从大到小(谁大谁是第一行,数据交换)

Sub mysort()

       Dim k as long, j as long, t   ‘t为变体类型,有数字和字符

       For k=3 To 11

              For j=k+1 To 12               ‘内循环k+1进行比较

              If cells(j,3) >cells(k,3) Then  ‘比较交换,交换必须有中间变量,否则出错

                     t=cells(j,2)            ‘先把要上移的值交给变量,把下移值直接交换

                     cells(j,2)=cells(k,2)

                     cells(k,2)=t

t=cells(j,3)

                     cells(j,3)=cells(k,3)

                     cells(k,3)=t

              End If

       Next j

Next k    

End Sub

 

例2 双循环排序应用,缺点效率低(50万次循环)

Sub mysortTime()

       Dim j&,k&,p&,t as date

       t=now()

       application.ScreenUpdating=False ‘关闭屏幕刷新提高运行效率

       For j=1 To 999

              For k=j+1 To 1000

                     If cells(j,2) <cells(k,2)

                            p=cells(j,2)    

                            cells(j,2)=cells(k,2)

                            cells(k,2)=p

                     End If

              Next k

       Next j

       Application.ScreenUpdating=True

       Msgbox datadiff(“s”,t,time()) &”秒”   ‘返回12s

End Sub

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值