求助大佬们,冒泡循环从大到小排序我想让下标从6开始应该怎么改
vb吧
全部回复
仅看楼主
level 2
求助大佬们,冒泡循环从大到小排序我想让下标从6开始应该怎么改啊?
2020年06月07日 05点06分 1
level 15
什么意思?数组还是8个数,但是下标范围变成6 To 13?那你把1 To 8改成6 To 13不就行了么(只有一个地方不需要改,就是排序的外层循环)
2020年06月07日 05点06分 2
吧务
level 13
' 排序循环应该是——
For i = 1 To 7
For j = i + 1 To 8
If a(j) > a(i) Then ' 降序排列
t = a(i) : a(i) = a(j) : a(j) = t
End If
Next
Next
' 下标从 6 开始的排序循环应该是——
' 仅仅修改一下外循环【i】的起点值
For i = 6 To UBound(a) - 1
For j = i + 1 To UBound(a)
If a(j) > a(i) Then ' 降序排列
t = a(i) : a(i) = a(j) : a(j) = t
End If
Next
Next
2020年06月07日 05点06分 3
原来的循环会出现【自己和自己比较】的情况。
2020年06月07日 05点06分
好的好的谢谢大佬!
2020年06月07日 05点06分
排序的外循环是【起点 → 终点 - 1】;内循环是【外循环变量 + 1 → 终点】。
2020年06月07日 05点06分
我之前就是弄错了那个外循环和内循环
2020年06月07日 05点06分
level 2
好的!谢谢大佬我做出来了!
2020年06月07日 05点06分 4
吧务
level 13
  冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
  它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
2020年06月07日 06点06分 5
吧务
level 13
Dim a(11), n1, n2, i, j, t , cc
n1 = LBound(a) ' 数组 a() 的最小下标
n2 = UBound(a) ' 数组 a() 的最大下标
cc = "冒泡排序(For 循环)例程:" & vbCrLf & vbCrLf
cc = cc & "随机数组数据:" & vbCrLf
Randomize
For i = LBound(a) To UBound(a)
a(i) = Int(Rnd * 900 + 100)
cc = cc & CStr(a(i))
If i < UBound(a) Then cc = cc & " "
Next
' 排序算法(Begin)
For i = n2 To n1 Step -1
For j = n1 To i - 1
If a(j) < a(j + 1) Then ' 降序
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next
Next
' 排序算法(End)
cc = cc & vbCrLf & vbCrLf & "降序排列:" & vbCrLf
For i = LBound(a) To UBound(a)
cc = cc & CStr(a(i))
If i < UBound(a) Then cc = cc & " "
Next
MsgBox cc, 0 + 64, "排序结果"
' End
2020年06月07日 08点06分 8
1