vb正整数排序法

Private Sub Command1_Click()
Dim c(100000) As Long
Dim b() As Long
Dim i As Long
For i = 0 To UBound(c)
c(i) = Fix(Rnd * 100000)
Next
 longSort c, b
For i = 0 To UBound(b)
Print b(i)
Next


End Sub
'==============================================
'正整数快速排序法.
'适合正整数,速度极快,数的范围越大,耗费的内存越多
'对相同的元素进行剔除!!
Sub longSort(Ay() As Long, AySort() As Long)
'Ay():排序前数组
'AySort:排序后的数组
'==============================================
Dim max As Long
Dim min As Long
Dim bY() As Boolean
Dim i As Long

Dim count As Long

max = Ay(0)
min = Ay(0)
'找出最大,最小值
For i = 0 To UBound(Ay)
  If Ay(i) > max Then max = Ay(i)
  If Ay(i) < min Then min = Ay(i)
Next

'把存在的数的布尔值设成真
ReDim bY(max - min)
For i = 0 To UBound(Ay)
  bY(Ay(i) - min) = True
Next

'排序
For i = 0 To max - min
  If bY(i) = True Then
    ReDim Preserve AySort(count)
    AySort(count) = i + min
    count = count + 1
  End If
Next


End Sub 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值