2016-04-30 35 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