0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Описание алгоритма</a></li>
1
<ul><li><a>Описание алгоритма</a></li>
2
<li><a>Рассмотрим пример</a></li>
2
<li><a>Рассмотрим пример</a></li>
3
<li><a>Реализация на Си шарп</a></li>
3
<li><a>Реализация на Си шарп</a></li>
4
<li><a>Реализация на Python</a></li>
4
<li><a>Реализация на Python</a></li>
5
</ul><p>В этом материале мы поговорим про<strong>алгоритм сортировки пузырьком</strong>(Bubble sort). Для примера попробуем отсортировать массив вручную, после чего напишем код для сортировки пузырьком на языке программирования<strong>Python</strong>и<strong>Си шарп</strong>.</p>
5
</ul><p>В этом материале мы поговорим про<strong>алгоритм сортировки пузырьком</strong>(Bubble sort). Для примера попробуем отсортировать массив вручную, после чего напишем код для сортировки пузырьком на языке программирования<strong>Python</strong>и<strong>Си шарп</strong>.</p>
6
<h2>Описание алгоритма</h2>
6
<h2>Описание алгоритма</h2>
7
<p>В процессе сортировки пузырьком происходит попарное сравнение соседних элементов массива, начиная с нулевого. После первой итерации самое большое число окажется на месте последнего, причем в дальнейших итерациях это значение уже задействоваться не будет (по сути, мы получим<em>n-1</em>сравнений). Далее алгоритм находит второй по величине элемент, который ставится на предпоследнее место, потом третий и пр. В результате на месте нулевого элемента (не забываем, что нумерация в массиве начинается с нуля) окажется наименьшее число, а на месте последнего элемента - наибольшее. То есть мы можем сказать, что элементы от большего к меньшему "всплывают" по аналогии с пузырьками.</p>
7
<p>В процессе сортировки пузырьком происходит попарное сравнение соседних элементов массива, начиная с нулевого. После первой итерации самое большое число окажется на месте последнего, причем в дальнейших итерациях это значение уже задействоваться не будет (по сути, мы получим<em>n-1</em>сравнений). Далее алгоритм находит второй по величине элемент, который ставится на предпоследнее место, потом третий и пр. В результате на месте нулевого элемента (не забываем, что нумерация в массиве начинается с нуля) окажется наименьшее число, а на месте последнего элемента - наибольшее. То есть мы можем сказать, что элементы от большего к меньшему "всплывают" по аналогии с пузырьками.</p>
8
<p>Проговорим алгоритм еще раз:</p>
8
<p>Проговорим алгоритм еще раз:</p>
9
<ol><li>Текущий элемент сравнивается с последующим.</li>
9
<ol><li>Текущий элемент сравнивается с последующим.</li>
10
<li>Если последующий меньше или больше, они меняются местами.</li>
10
<li>Если последующий меньше или больше, они меняются местами.</li>
11
<li>Когда сортировка заканчивается, алгоритм прекращает работу, иначе снова происходит переход на шаг № 1.</li>
11
<li>Когда сортировка заканчивается, алгоритм прекращает работу, иначе снова происходит переход на шаг № 1.</li>
12
</ol><p>Важно понимать, что при реализации сортировки применяют 2 цикла: основной и вложенный (внутренний цикл). По результатам одного прохода внутреннего цикла самый большой элемент смещается в конец массива, тогда как самый маленький перемещается к началу (на одну позицию).</p>
12
</ol><p>Важно понимать, что при реализации сортировки применяют 2 цикла: основной и вложенный (внутренний цикл). По результатам одного прохода внутреннего цикла самый большой элемент смещается в конец массива, тогда как самый маленький перемещается к началу (на одну позицию).</p>
13
<h2>Рассмотрим пример</h2>
13
<h2>Рассмотрим пример</h2>
14
<p>Представьте, что у нас есть следующий массив: </p>
14
<p>Представьте, что у нас есть следующий массив: </p>
15
<p><em>7 2 9 4 1 0</em></p>
15
<p><em>7 2 9 4 1 0</em></p>
16
<p>В процессе первой итерации мы возьмем нулевой элемент (это 7) и сравним его с соседним. Так как семь больше двух, числа меняются своими местами. То есть массив меняется:</p>
16
<p>В процессе первой итерации мы возьмем нулевой элемент (это 7) и сравним его с соседним. Так как семь больше двух, числа меняются своими местами. То есть массив меняется:</p>
17
<p><em>2 <strong>7</strong> 9 4 1 0</em></p>
17
<p><em>2 <strong>7</strong> 9 4 1 0</em></p>
18
<p>Потом происходит сравнение второго и третьего числа. Так как изначально 9 больше семи, то семь остается на месте. Далее 9 последовательно сравнивается с остальными значениями и таким образом постепенно перемещается в самый конец массива (так как числа, большего, чем 9, в массиве нет, девятка занимает заслуженное последнее место).</p>
18
<p>Потом происходит сравнение второго и третьего числа. Так как изначально 9 больше семи, то семь остается на месте. Далее 9 последовательно сравнивается с остальными значениями и таким образом постепенно перемещается в самый конец массива (так как числа, большего, чем 9, в массиве нет, девятка занимает заслуженное последнее место).</p>
19
<p><em>2 7 4 1 0 <strong>9</strong></em></p>
19
<p><em>2 7 4 1 0 <strong>9</strong></em></p>
20
<p>Первая итерация закончена, количество шагов уменьшилось на 1 (<em>n-1</em>), то есть 9 находится там, где надо. Больше это число не затрагивается.</p>
20
<p>Первая итерация закончена, количество шагов уменьшилось на 1 (<em>n-1</em>), то есть 9 находится там, где надо. Больше это число не затрагивается.</p>
21
<p>Во второй итерации все опять начинается с нулевого элемента массива (в нашем случае это двойка) с последующими сравнениями и перемещениями. В результате массив будет выглядеть следующим образом:</p>
21
<p>Во второй итерации все опять начинается с нулевого элемента массива (в нашем случае это двойка) с последующими сравнениями и перемещениями. В результате массив будет выглядеть следующим образом:</p>
22
<p><em>2 4 1 0 <strong>7 9</strong></em></p>
22
<p><em>2 4 1 0 <strong>7 9</strong></em></p>
23
<p>И так далее. Итоговый вид массива после сортировки по методу пузырьком вы можете видеть ниже:</p>
23
<p>И так далее. Итоговый вид массива после сортировки по методу пузырьком вы можете видеть ниже:</p>
24
<p><em>0 1 2 4 7 9</em></p>
24
<p><em>0 1 2 4 7 9</em></p>
25
<p>Как видите, ничего сложного в этом нет.</p>
25
<p>Как видите, ничего сложного в этом нет.</p>
26
<h2>Реализация на Си шарп</h2>
26
<h2>Реализация на Си шарп</h2>
27
<p>Чтобы реализовать сортировку пузырьком, сначала над создать саму функцию сортировки, которая будет располагаться в итоге перед функцией main:</p>
27
<p>Чтобы реализовать сортировку пузырьком, сначала над создать саму функцию сортировки, которая будет располагаться в итоге перед функцией main:</p>
28
<p> static int[] BubbleSort(int[] mas)</p>
28
<p> static int[] BubbleSort(int[] mas)</p>
29
<p> {</p>
29
<p> {</p>
30
<p> int temp;</p>
30
<p> int temp;</p>
31
<p> for (int i = 0; i < mas.Length; i++)</p>
31
<p> for (int i = 0; i < mas.Length; i++)</p>
32
<p> {</p>
32
<p> {</p>
33
<p> for (int j = i + 1; j < mas.Length; j++)</p>
33
<p> for (int j = i + 1; j < mas.Length; j++)</p>
34
<p> {</p>
34
<p> {</p>
35
<p> if (mas[i] > mas[j])</p>
35
<p> if (mas[i] > mas[j])</p>
36
<p> {</p>
36
<p> {</p>
37
<p> temp = mas[i];</p>
37
<p> temp = mas[i];</p>
38
<p> mas[i] = mas[j];</p>
38
<p> mas[i] = mas[j];</p>
39
<p> mas[j] = temp;</p>
39
<p> mas[j] = temp;</p>
40
<p> } </p>
40
<p> } </p>
41
<p> } </p>
41
<p> } </p>
42
<p> }</p>
42
<p> }</p>
43
<p> return mas;</p>
43
<p> return mas;</p>
44
<p> }</p>
44
<p> }</p>
45
<p>Итоговый код будет выглядеть следующим образом:</p>
45
<p>Итоговый код будет выглядеть следующим образом:</p>
46
<p>Теперь давайте попробуем выполнить сортировку пузырьком c "Пайтон":</p>
46
<p>Теперь давайте попробуем выполнить сортировку пузырьком c "Пайтон":</p>
47
<a></a><p><em>По материалам:</em></p>
47
<a></a><p><em>По материалам:</em></p>
48
<ul><li><em>https://all-python.ru/primery/puzyryok.html;</em></li>
48
<ul><li><em>https://all-python.ru/primery/puzyryok.html;</em></li>
49
<li><em>https://csharp.webdelphi.ru/sortirovka-massiva-c-algoritm-sortirovka-puzyrkom/;</em></li>
49
<li><em>https://csharp.webdelphi.ru/sortirovka-massiva-c-algoritm-sortirovka-puzyrkom/;</em></li>
50
<li><em>https://vscode.ru/prog-lessons/sortirovka-metodom-puzyirka-c-sharp.html.</em></li>
50
<li><em>https://vscode.ru/prog-lessons/sortirovka-metodom-puzyirka-c-sharp.html.</em></li>
51
</ul>
51
</ul>