В данной статье будет разобрано решение следующей задачи:
В массиве стоят числа 0, 1 и 2. Переставить их в порядке возрастания, если единственной разрешенной операцией (помимо чтения) над массивом является перестановка двух элементов.
Реализовать программный код будем на C# в среде разработки Visual Studio 2008 как Windows приложение с формами.
Начинаем, конечно, с создания проекта с формой. На форме нужно разместить следующие объекты:
- Надпись Label;
- Текстовое поле Textbox, переименовать имя в “cout_oper”;
- Кнопку Button, переименовать в “work”;
- Два текстовых поля большой длины RichTextbox, переименовать в “ data_mas ” и “date_mas_ch” соответственно.
Пример показан на рисунке:
Программа не большая и довольно проста. Рассмотрим процедуру “work_Click(), которая вызывается всякий раз, когда происходит событие клика по кнопке “work”:
private void work_Click(object sender, EventArgs e) { data_mas.Clear(); date_mas_ch.Clear(); Random r = new Random(); int c_m = r.Next(10, 30), count = 0; int[] mass = new int[c_m]; for (int i = 0; i < c_m; i++) { mass[i] = r.Next(0, 3); data_mas.Text = data_mas.Text + " " + mass[i]; } for (int i = 0; i < c_m; i++) { int k = i, x = mass[i]; for (int j = i + 1; j < c_m; j++) if (mass[j] < x) { k = j; x = mass[j]; count++; } mass[k] = mass[i]; mass[i] = x; } for (int i = 0; i < c_m; i++) date_mas_ch.Text = date_mas_ch.Text + " " + mass[i]; cout_oper.Text = Convert.ToString(count); }
В этой процедуре сначала происходит очистка текстовых полей большой длины, чтобы при следующем запуске процедуры поля заполнялись только новыми данными. Дальше генерируем длину массива от 10 до 30 и создаем его. В первом цикле for происходит заполнение массива числа 0, 1 или 2 также случайно и вывод его в форму.
Затем мы используем сортировку, переставляя два элемента, если это необходимо. Самый последний цикл for выводит отсортированный в порядке возрастания массив в поле “date_mas_ch”, а в поле “cout_oper” записывается число равное количеству операций, которых нам понадобилось выполнить, чтобы отсортировать массив.
Теперь пробуйте запустить приложение. Пример выполнения программы показан выше.
Автор: Евтеев Евгений Александрович