Данная статья поможет понять что такое сортировка методом пузырька, как её написать на языке C# и поможет в принципе понять программирование.
Описание алгоритма:
Идея данной сортировки заключается в попарном сравнении соседних элементов, начиная с нулевого в массиве. Больший элемент при этом в конце первой итерации оказывается на месте последнего элемента массива, и в следующих итерациях мы его уже не сравниваем его с остальными элементами (то есть у нас будет n-1 сравнений). Затем таким же образом мы находим второй по максимальности элемент и ставим его на предпоследнее место, и т. д. После всех итераций получится, что на месте нулевого элемента окажется элемент с наименьшим числовым значением, а на месте последнего — с наибольшим числовым значением. Таким образом у нас как бы «всплывают» элементы от большего к меньшему.
Примечание: можно также реализовать последовательность от меньшего к большему. В коде это лишь замена знака «>» на знак «<» в коде (подробнее в примечании ниже).
Пример:
У нас имеется массив: 7 2 9 4 1 0
Проводим первую итерацию(повторение цикла). Мы берем нулевой элемент массива (7) и сравниваем его с соседним:
7<>2 9 4 1 0
Так как 7 больше, чем 2, мы меняем эти элементы местами. Получается массив:
2 7 9 4 1 0
Далее мы сравниваем 7 и 9.
2 7<>9 4 1 0
Число 9 больше, чем 7. Значит 7 остаётся на своём месте. Теперь мы будем сравнивать число 9 с остальными числами и, если 9 будет больше, чем соседние с ним числа, то будет меняться местами с ними.
2 7 9<>4 1 0
2 7 4 9<>1 0
2 7 4 1 9<>0
2 7 4 1 0 9
Число 9 заняло своё место и нам его трогать больше не нужно, для этого мы уменьшаем количество повторений на 1(n-1).
таким образом мы повторяем итерации цикла на 1 меньше, чем цифр в массиве.
в итоге у нас должно получиться в ответе:
0 1 2 4 7 9
Теперь напишем код:
int[] nums = { 7, 2, 9 ,4 ,1, 0};
// сортировка
int temp;
for (int i = 0; i < nums.Length - 1; i++){
for (int j = i + 1; j < nums.Length; j++){
if (nums[i] > nums[j]){
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;}}}
// вывод
Console.WriteLine("Вывод отсортированного массива");
for (int i = 0; i < nums.Length; i++)
{Console.WriteLine(nums[i]);}