HTML Diff
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 &lt; mas.Length; i++)</p>
31 <p> for (int i = 0; i &lt; mas.Length; i++)</p>
32 <p> {</p>
32 <p> {</p>
33 <p> for (int j = i + 1; j &lt; mas.Length; j++)</p>
33 <p> for (int j = i + 1; j &lt; mas.Length; j++)</p>
34 <p> {</p>
34 <p> {</p>
35 <p> if (mas[i] &gt; mas[j])</p>
35 <p> if (mas[i] &gt; 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>