簡體   English   中英

在Windows Forms C#中用於列表框的冒泡排序算法?

[英]Bubble Sort Algorithm being used for a listbox in Windows Forms C#?

我目前有一個包含四個單選按鈕,一個列表框和一個顯示“排序”的按鈕的表單。 單擊每個單選按鈕都會在列表框內生成一定數量的隨機生成的整數。 我想要的是當我單擊“排序”按鈕時,我編寫的氣泡排序算法將針對列表框中的所有整數運行。 我為button1_Click事件編寫了冒泡排序算法,並且將帶有radioButton1_CheckedChanged事件的隨機生成的整數添加到列表框中。 我知道算法會在我單擊按鈕后運行,只是在將其連接到列表框中顯示的整數數組時遇到了麻煩,因此該算法對列表框中的整數進行了排序。 我知道我必須以某種方式將算法連接到為列表框生成的特定數組,但是我很難弄清其背后的邏輯。 以下是我的按鈕單擊事件和第一個單選按鈕選中事件的代碼摘錄。 現在,我正在測試我的第一個單選按鈕的代碼,該按鈕會在列表框中產生1-100之間的100個隨機整數。 如果有人對我可以如何使我朝正確的方向提出任何建議,我將不勝感激。 另外,如果您想知道的話,在我的列表框下面的代碼中,名稱為“ Numbers”。

int[] array;
int smallMaxSize = 101;
#region Sort Button Click
    private void button1_Click(object sender, EventArgs e)//Bubblesort Code
    {
        int Out;
        int In;

        for ( Out = smallMaxSize - 1; Out > 1; Out--)
        {
            for (In = 0; In < Out; In++)
            {
                if (array[In] > array[In + 1])
                {
                    swap(In, In + 1);

                }
            }
        }
    }
    #endregion

    #region Sort Numbers
    private void swap(int one, int two)//Swaps larger number for smaller number
    {
        int temp = array[one];
        array[one] = array[two];
        array[two] = temp;
    }
    #endregion 

    #region Small Max: 100
    private void radioButton1_CheckedChanged(object sender, EventArgs e)//Max 100 button
    {
        Numbers.Items.Clear();
        array = new int[smallMaxSize];

        Random numGenerator = new Random();

        numGenerator.Next(smallMaxSize);

        for (int i = 0; i < 101; i++)//Generates 100 random numbers from 1-100
        {
            array[i] = numGenerator.Next(smallMaxSize);
            Numbers.Items.Add(array[i]);
        }    
    }
    #endregion

對數組進行排序后執行以下操作:

Numbers.Items.Clear();

for(int i = 0; i < 101; i++) {
    Numbers.Items.Add(array[i]);
}

這應該夠了吧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM