Я хочу, чтобы сортировка шаг за шагом в C # в графическом интерфейсе - PullRequest
1 голос
/ 11 февраля 2012

Я написал этот код для c #

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);
    }

Но это делает только один шаг, а потом он останавливается. Как этого добиться.

Кнопка действия сортировки похожа на

  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();
        }

    }  

и работает только один раз, после чего перестает работать.

1 Ответ

1 голос
/ 11 февраля 2012

Если ваш код верен, вы должны сделать что-то вроде этого.Таким образом, ваш код будет проходить и показывать изменения как бы то ни было, это происходит так быстро, что вы не увидите его в GUI.Вы должны сделать переменные, например, членом класса.Затем, нажав кнопку, вы увеличиваете i.

Итак, итоги: установите i в число, при каждом нажатии кнопки.Тогда ваш метод сделает только одну итерацию и покажет пользовательский интерфейс.Чтобы продолжить, нажмите кнопку еще раз и увеличьте 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);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...