2012-02-11 60 views
1

排序步驟我已經寫了這個代碼爲C#我想在C#中的GUI

void SelectionSort() 
    { 
     clearFontColor(); 
     int i, j, min, temp; 
     for (i = 0; i < 9; i++) 
     { 
      min = i; 
      for (j = i + 1; j < 10; j++) 
      { 
       if (input[min] > input[j]) 
       { 
        min = j; 
       } 
      } 
      if (min != i) 
      { 
       temp = input[i]; 
       input[i] = input[min]; 
       input[min] = temp; 
      } 

     } 
     show(input); 
    } 

但這是做只有一個步驟,稍後它stops.How來實現這一目標。

的排序操作按鈕就像

private void button2_Click(object sender, EventArgs e) 
    { 
     // lbl_step.Visible = true; 
     if (radioButton2.Checked) 
     { 
      InsertionSort(); 
     } 
     else if (radioButton1.Checked) 
     { 
      bubble(); 
     } 
     else if (radioButton3.Checked) 
     { 
      SelectionSort(); 
     } 

    } 

和它只是一個之後,它停止工作時間的工作。

+0

這不是C.您不必在方法開始時聲明所有變量。 – 2012-02-11 01:08:05

+0

你能解決這個問題嗎? – 2012-02-11 01:26:32

+2

如果我正確讀取所有代碼,則您傳遞的數組是通過引用。因此,當您第一次對數組進行排序時。然後第二次數組已經排序。我錯過了什麼嗎?這是你問的問題嗎? – 2012-02-11 01:28:53

回答

1

假設你的代碼是正確的,你已經做了這樣的事情。所以你的代碼將會遍歷並顯示改變的方式,這種情況發生得如此之快以至於在GUI上看不到它。您需要將變量作爲類成員。然後在你的按鈕點擊,你增加我。

所以總結:設置我每個按鈕點擊一個數字。然後你的方法將只執行一次迭代並顯示用戶界面。要繼續,請再次單擊該按鈕並增加i(確保檢查邊界)。

int i; 
void SelectionSort() 
{ 
    clearFontColor(); 
    int j, temp; 
    min = i; 
    for (j = i + 1; j < 10; j++) 
    { 
     if (input[min] > input[j]) 
     { 
      min = j; 
     } 
    } 
    if (min != i) 
    { 
     temp = input[i]; 
     input[i] = input[min]; 
     input[min] = temp; 
    } 
    show(input); 
}