当前位置:编程学习 > VB >>

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课后答案

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,