2016-04-30 79 views
-1

这是仅在按钮2单击时生成1个数字的代码。我需要它采取从按钮1点击10个数字数组中,并产生排序,从最小到最大的相同十个数字:使用随机数字和冒泡排序初始化数组

Public Class Form1 
    Dim numberArray(9) As Integer 
    Dim generator As New Random 


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim min As Integer 
     Dim r As Integer 
     Dim max As Integer 
     min = Val(TextBox1.Text) 
     max = Val(TextBox2.Text) 
     Label1.Text = "" 
     For r = 0 To numberArray.GetUpperBound(0) 
      numberArray(r) = generator.Next(min, max) 
      Label1.Text += numberArray(r) & " " 
      Label1.Text += ControlChars.NewLine 
     Next 

    End Sub 

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 


     Dim r As Integer 
     Dim intTemp As Integer 
     Dim blnExhchangeMade As Boolean 
     blnExhchangeMade = False 
     Do While blnExhchangeMade 


      For r = LBound(numberArray) To (UBound(numberArray) - 1) 
       If numberArray(r) < numberArray(r + 1) Then 
        intTemp = numberArray(r) 
        numberArray(r) = numberArray(r + 1) 
        numberArray(r + 1) = intTemp 
        blnExhchangeMade = True 

       End If 

      Next 
     Loop 
     Label2.Text += numberArray(r) & " " 
     Label2.Text += ControlChars.NewLine 
    End Sub 
End Class 
+0

是你得到一个错误,或者数组只是没有排序? – Kateract

+0

https://en.wikipedia.org/wiki/Bubble_sort翻译伪码 – Plutonix

+0

你自己没有写过。你可以说因为你在一个地方使用了'GetUpperBound',而在另一个地方使用了'UBound'。你应该真的了解算法并自己编写代码。我想你会发现你可以自己解决这个问题。 Plutonix链接的伪代码是一个好的开始。 – Enigmativity

回答

0

下面的代码我会去用:

Private Const elements As Integer = 9 
Private numberArray(elements - 1) As Integer 
Private generator As New Random 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim min As Integer = Integer.Parse(TextBox1.Text) 
    Dim max As Integer = Integer.Parse(TextBox2.Text) 
    Label1.Text = "" 
    For r = 0 To elements - 1 
     numberArray(r) = generator.Next(min, max + 1) 
     Label1.Text += numberArray(r) & " " 
     Label1.Text += System.Environment.NewLine 
    Next 
End Sub 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim intTemp As Integer 
    Dim blnExhchangeMade As Boolean = True 
    Do While blnExhchangeMade 
     blnExhchangeMade = False 
     For r = 0 To elements - 2 
      If numberArray(r) > numberArray(r + 1) Then 
       intTemp = numberArray(r) 
       numberArray(r) = numberArray(r + 1) 
       numberArray(r + 1) = intTemp 
       blnExhchangeMade = True 
      End If 
     Next 
    Loop 
    Label1.Text = "" 
    For r = 0 To elements - 1 
     Label1.Text += numberArray(r) & " " 
     Label1.Text += System.Environment.NewLine 
    Next 
End Sub 
+0

感谢您的帮助。我知道使用第一个按钮的最小值和最大值必须有错误。我计划修复我的问题并稍后使用它开发另一个Windows程序供我自己使用。我昨天晚上试图弄清楚头发。我删除并开始了无数次。我不得不把CB作为一项要求,但在本学期之后,我将专注于C#和Python。是否有任何书籍或参考文献可以更好地帮助我理解循环? – CertIntrovert23

+0

@ CertIntrovert23 - 循环是命令式编程(VB.NET,C#,Python都在该类中)的一个相当基本的部分。我不认为你有循环问题。我认为这更能够在你脑海中运行程序来正确调试它。这只是练习。我会更倾向于写小测试程序,稍微推动你的理解,以便通过小步骤学习。 – Enigmativity