VB里 我给出10个数进行大小排列。但是我现在只做到了10个数选出最大的数求大神帮我详解接下来我该怎么做
4个回答
展开全部
我给你推荐一种简单的交换排序法。
如果如下为数据列arr(6)={A,B,C,D,E,F}(用字母代替,方便叙述)
从第一个数开始往下循环比较,总是将大的数替换到前面的位置,从大到小排序流程如下:
(1)arr(0)跟其余所有的数据挨个比较,把大的数换到arr(0),
arr(0)跟arr(1)比较,如果arr(0)>=arr(1),则进行下一个比较,如果arr(0)<arr(1)则将arr(0)和arr(1)互换;
arr(0)跟arr(2)比较,如果arr(0)>=arr(2),则进行下一个比较,如果arr(0)<arr(2)则将arr(0)和arr(2)互换;
....
直到比较完所有的数,此时arr(0)是最大的数了。
(2)arr(1)跟余下的数挨个比较,把大的数换到arr(1),最后第二大数就被换到arr(1)
....
(3)一直比较到arr(最后一位)
得到的数列就为一个从大到小的数列。
具体代码如下
dim arr()= new integer()={12,33,22,19,47,65,99}定义源数组
dim i,j as integer定义循环变量
dim count as long定义数组个数
count = Ubound(arr)-Lbound(arr)+1获取数组个数
for i = 0 to count-1
for j = i to count-1
if arr(i)<arr(j) then把大的数交换到前面
temp = arr(i)把小的数储存起来
arr(i)=arr(j)把大的数赋于前面的arr(i)
arr(j)=temp
end if
nextj
next i
这个时候你得到的数组就是一个从大到小的数组了。
如果如下为数据列arr(6)={A,B,C,D,E,F}(用字母代替,方便叙述)
从第一个数开始往下循环比较,总是将大的数替换到前面的位置,从大到小排序流程如下:
(1)arr(0)跟其余所有的数据挨个比较,把大的数换到arr(0),
arr(0)跟arr(1)比较,如果arr(0)>=arr(1),则进行下一个比较,如果arr(0)<arr(1)则将arr(0)和arr(1)互换;
arr(0)跟arr(2)比较,如果arr(0)>=arr(2),则进行下一个比较,如果arr(0)<arr(2)则将arr(0)和arr(2)互换;
....
直到比较完所有的数,此时arr(0)是最大的数了。
(2)arr(1)跟余下的数挨个比较,把大的数换到arr(1),最后第二大数就被换到arr(1)
....
(3)一直比较到arr(最后一位)
得到的数列就为一个从大到小的数列。
具体代码如下
dim arr()= new integer()={12,33,22,19,47,65,99}定义源数组
dim i,j as integer定义循环变量
dim count as long定义数组个数
count = Ubound(arr)-Lbound(arr)+1获取数组个数
for i = 0 to count-1
for j = i to count-1
if arr(i)<arr(j) then把大的数交换到前面
temp = arr(i)把小的数储存起来
arr(i)=arr(j)把大的数赋于前面的arr(i)
arr(j)=temp
end if
nextj
next i
这个时候你得到的数组就是一个从大到小的数组了。
展开全部
使用冒泡排序法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-15
展开全部
Private Sub Command1_Click()
Dim i As Integer
Dim intMyArray(0 To 4) As Integer
intMyArray(0) = 1
intMyArray(1) = 5
intMyArray(2) = 4
intMyArray(3) = 1
intMyArray(4) = 3
If MySort(intMyArray()) Then
For i = 0 To UBound(intMyArray)
Print intMyArray(i)
Next
Else
MsgBox "排序失败", vbExclamation, "提示"
End If
End Sub
Private Function MySort(intArray() As Integer) As Boolean
Dim i As Integer, j As Integer
Dim intTmp As Integer
On Error GoTo ErrLab
For i = 0 To UBound(intArray) - 1
For j = 0 To UBound(intArray) - i - 1
If intArray(j) > intArray(j + 1) Then
intTmp = intArray(j)
intArray(j) = intArray(j + 1)
intArray(j + 1) = intTmp
End If
Next
Next
MySort = True
ErrLab:
If Err.Number <> 0 Then
MySort = False
End If
End Function
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询