vb顺序查找算法,利用随机函数给一维数组(数组大小为25)赋值,要求数组元素值不重复。
参考思路:先产生25个数组元素值,以第1个数组元素值为要查找的值,在余下的24个元素中查找该值是否存在,如果存在,修改查找到的元素值,然后依次以第2个到第24个元素为查找的值对余下的数据进行查找改。
举例:随机产生的数据为 2 6 0 2 4 3 2 3
以第1个数据为查找值修改后的数据 2 6 0 3 4 3 4 3 (修改标准为依次+1)
补充:【排序算法】将上面的25个数据进行递减排列,可以任意选择排序算法。
【矩阵转置】将上面的一维数组元素值赋值给一个二维数组,将二维数组输出为5行5列显示
答案:Public Class Form1
Dim ran_array(0 To 24) As Integer
Dim ran_num As New Random
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i = 0
For i = 0 To ran_array.Length - 1
ran_array(i) = ran_num.Next(1, 99) '范围可以随意指定
Next i
Dim inc_num = 1 '遇到同样数字时增加数 每次遇到一个加一个
Dim flage = False '用于判断是否有重复数字。 不加这个 有了重复就要重新在比较 否则 相同数加1后 会出现与前面的一个数字相同的情况 例如: 4,3,1 ,2,0,3
'第二遍 变成 4,3,1,2,0,4 这样走后一个3加1后就会哈根第一个相同
i = 0
While i < ran_array.Length
For j = i + 1 To ran_array.Length - 1
If ran_array(i) = ran_array(j) Then
ran_array(j) = ran_array(j) + inc_num
inc_num = inc_num + 1
flage = True
End If
Next j
If flage Then
i = 0
Else
i = i + 1
End If
flage = False
End While
shou_array()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim max_index, temp1 As Integer
max_index = 0
Dim max1 As Integer
max1 = 0
For i = 0 To ran_array.Length - 1
For j = i To ran_array.Length - 1
If max1 < ran_array(j) Then
max1 = ran_array(j)
max_index = j
End If
Next j
temp1 = ran_array(max_index)
ran_array(max_index) = ran_array(i)
ran_array(i) = temp1
max1 = 0
Next i
shou_array()
End Sub
Private Sub shou_array()
Dim text = ""
For Each aa In ran_array
text = text & "," & aa
Next
TextBox1.Text = Mid(Text, 2)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim out_array(0 To 5, 0 To 5) As Integer
Dim index = 0
Dim outText = ""
For i = 0 To 4
For j = 0 To 4
out_array(i, j) = ran_array(index)
outText = outText & "," & out_array(i, j)
index = index + 1
Next j
TextBox2.Text = TextBox2.Text + Mid(outText, 2) & Chr(13) & Chr(10)
outText = ""
Next i
End Sub
End Class
其他:Dim N(25) As Integer,i As Integer,j As Integer,Temp As Integer
Dim N2(0 to 5,0 to 5) As Integer
For i=0 to 24 '随机初始化数组
N(i)=Rnd*100
Next
'//////////////////////////////////////////////////////////////////////
For i=0 to 24'处理数组中值相同的元素
For j= 0 to 24
if N(j)=N(i) Then N(j)=Rnd *100
Next
Next
'/////////////////////////////////////////////////////////////////////
For i = 0 to 24'递减排序(冒泡)
For j= 0 to 24-i
if a(j)<a(j+1) then
temp=a(j)
a(j)=a(j+1)
a(j+1)=temp
Next
Next
'/////////////////////////////////////////////////////////////////
For i= 0 to 4'把一维数组保存到二维数组(5*5)
For j=0 to 4
N2(i,j)=N(i*j)
Next
Next
'/////////////////////////////////////////////////////////////////
For i= 0 to 4'把二维数组5*5格式输出
For j=0 to 4
printf N2(i,j)
Next
Print Tab;
Next Private Sub Command1_Click()
Dim a(10) As Integer, i As Integer
Print "随机生成数组:"
For i = 1 To 10
a(i) = Int(Rnd * 100) + 1
Print a(i);
Next i
Print
Print "降序排序后为:"
Call px(a)
End Sub
Sub px(a() As Integer)
For j = 1 To 9
For i = 1 To 9
If a(i) < a(i + 1) Then temp = a(i + 1): a(i + 1) = a(i): a(i) = temp
Next i
Next j
For i = 1 To 10
Print a(i);
Next i
End Sub
上一个:关于VB欢迎界面图片显示的问题,紧急~~可以加分!!!
下一个:求VB课后答案