选择排序

选择排序,倒过来,从最后一个分别以上面最大的进行比较,优点是速度更快,不需要和每一个对调位置,只需要和最大的比较。

先理解以下的代码,目的是找出最大的值

Private Sub CommandButton1_Click()
    Dim x, y, imax, arr
    arr = Range("a1:a10")
    imax = 1 '先假设为1
    For x = 1 To UBound(arr)
        If arr(x, 1) = 47 Then imax = x
        '第一次和第一个判断,大于的话,IMAX值发生变化
        '第二次和新的IMAX值对比,双于的话,IMAX值再次改变
    Next
    MsgBox arr(imax, 1)
End Sub
Private Sub CommandButton1_Click()
  Dim x, y, imax, temp '声明变量
  Dim arr '声明数组
  arr = Range("a1:a10") '将区域内容装入到数组中
    For x = UBound(arr) To 2 Step -1
    '从最后一个到第二个做循环,第二个需要和上面的比较,第一个不需要比较
    imax = 1 '记下最大值,先假设为1
      For y = 1 To x '从第一个到X循环,第一次x为10,第二次为9
        If arr(y, 1)>arr(imax, 1) Then imax = y
        '捕捉最大值,并记下
      Next
        temp = arr(imax, 1) '先将最大的值 装入内存
        arr(imax, 1) = arr(x, 1) '对调位置
        arr(x, 1) = temp '对调位置
    Next
  Range("c1").Resize(UBound(arr), 1) = arr
End Sub

发表评论

电子邮件地址不会被公开。 必填项已用*标注