求10个数按照从大到小的顺序排列 要求用插入、选择两种方法 vb.net程序 (控制台应用程序)

插入做一遍,选择做一遍

'选择法
Private Sub Command9_Click()
Me.Cls '创建Text1,输入10组数据,用空格分开之
Dim i, j, Maxid As Integer, Max, k(0 To 9), tmp As Single, f() As String
f() = Split(Trim(Text1), " ")
If UBound(f) <> 9 Then Exit Sub

For i = 0 To 9
k(i) = CSng(f(i))
Next i

For i = 0 To 9
Max = k(0)
Maxid = 0
k(0) = k(9 - i)

For j = 0 To (8 - i)
If k(j) > Max Then
tmp = Max
Max = k(j)
k(j) = tmp
Maxid = j
End If
Next j
Print Max;
Next i
End Sub
'====================================================
'插入法
'创建控件Command5,Text3,在Text3中输入若干组数据,并用空格分开各组数据

Text3 = Trim(Text3)
Dim f() As String, tmp As Single, i As Single, j As Single
f = Split(Text3, " ")

If UBound(f) = 0 Then Exit Sub

ReDim h(0 To UBound(f) - 1) As String
For i = 0 To UBound(f)
For j = i To UBound(f)
If CSng(f(j)) < CSng(f(i)) Then
tmp = f(i)
f(i) = f(j)
f(j) = tmp
End If
Next j
Next i
Text3 = ""
For i = 0 To UBound(f)
Text3 = Text3 & CSng(f(i))
If i < UBound(f) Then Text3 = Text3 & " "
Next i
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-06
Dim i, j, temp As Integer
'交换标志
Dim exchange As Boolean
For i = 0 To R.Length - 1
'本趟排序开始前,交换标志应为假
exchange = False
For j = R.Length - 2 To 0 Step -1
'交换条件
If R(j + 1) < R(j) Then
temp = R(j + 1)
R(j + 1) = R(j)
R(j) = temp
'发生了交换,故将交换标志置为真
exchange = True
End If
Next
'本趟排序未发生交换,提前终止算法
If Not exchange Then
Exit For
End If
Next
End Sub
第2个回答  2014-03-06
下面是C#的,如果你自己改不成VB.net的,我没的说了
插入:
static void Sort(int[] arr)
{
for (int i = 1; i < arr.Length; i++)
{
int temp = arr[i];
int j = i;
while (j > 0 && arr[j - 1] > temp)
{
arr[j] = arr[j - 1];
j--;
}
arr[j] = temp;
}
}
选择:
static void Sort1(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
for (int j = i; j < arr.Length; j++)
{
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}