0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Определение и принцип работы</a><ul><li><a>Эффективность</a></li>
1
<ul><li><a>Определение и принцип работы</a><ul><li><a>Эффективность</a></li>
2
</ul></li>
2
</ul></li>
3
<li><a>Как реализуется</a><ul><li><a>Разбор кода</a></li>
3
<li><a>Как реализуется</a><ul><li><a>Разбор кода</a></li>
4
</ul></li>
4
</ul></li>
5
<li><a>Прочие известные алгоритмы упорядочивания</a></li>
5
<li><a>Прочие известные алгоритмы упорядочивания</a></li>
6
</ul><p>Сортировка - это последовательное расположение или разбиение на группы чего-либо в зависимости от заданного критерия. В программировании такой процесс характеризуется упорядочиванием элементов массива по тем или иным параметрам.</p>
6
</ul><p>Сортировка - это последовательное расположение или разбиение на группы чего-либо в зависимости от заданного критерия. В программировании такой процесс характеризуется упорядочиванием элементов массива по тем или иным параметрам.</p>
7
<p>Разработчики могут пользоваться алгоритмами, которые помогают упорядочивать разные неорганизованные данные. Соответствующие последовательности действий отличаются друг от друга. Этих<a>алгоритмов очень много</a>. Один из наиболее простых вариантов - пузырьковая сортировка массива.</p>
7
<p>Разработчики могут пользоваться алгоритмами, которые помогают упорядочивать разные неорганизованные данные. Соответствующие последовательности действий отличаются друг от друга. Этих<a>алгоритмов очень много</a>. Один из наиболее простых вариантов - пузырьковая сортировка массива.</p>
8
<p>Далее этот алгоритм будет рассмотрен более подробно. Он практически не встречается в сложных задачах, но хорошо подходит для обучения упорядочиванию элементов массива. Также предстоит изучить некоторые другие известные алгоритмы сортировки.</p>
8
<p>Далее этот алгоритм будет рассмотрен более подробно. Он практически не встречается в сложных задачах, но хорошо подходит для обучения упорядочиванию элементов массива. Также предстоит изучить некоторые другие известные алгоритмы сортировки.</p>
9
<h2>Определение и принцип работы</h2>
9
<h2>Определение и принцип работы</h2>
10
<p>Bubble Sort - один из квадратичных алгоритмов сортировки элементов массива. Он на каждом шаге берет два соседних значения и сравнивает их. Наибольший элемент ставится в конец соответствующей пары.</p>
10
<p>Bubble Sort - один из квадратичных алгоритмов сортировки элементов массива. Он на каждом шаге берет два соседних значения и сравнивает их. Наибольший элемент ставится в конец соответствующей пары.</p>
11
<p>Это значит, что при каждой итерации по циклу большие элементы начнут появляться к концу массива, подобно пузырькам воздуха. Отсюда и произошло название метода.</p>
11
<p>Это значит, что при каждой итерации по циклу большие элементы начнут появляться к концу массива, подобно пузырькам воздуха. Отсюда и произошло название метода.</p>
12
<p>В алгоритме пузырька массив отсортирован "по возрастанию". Эта концепция хорошо работает с небольшими последовательностями. Если используется крупный массив, сортировка способна затянуться на весьма продолжительный срок.</p>
12
<p>В алгоритме пузырька массив отсортирован "по возрастанию". Эта концепция хорошо работает с небольшими последовательностями. Если используется крупный массив, сортировка способна затянуться на весьма продолжительный срок.</p>
13
<p>Работает bubble sort так:</p>
13
<p>Работает bubble sort так:</p>
14
<ol><li>Сначала берется самый первый элемент заданного массива и сравнивается со вторым. Если первый больше второго, нужно поменять их местами. В противном случае никаких изменений производить не придется.</li>
14
<ol><li>Сначала берется самый первый элемент заданного массива и сравнивается со вторым. Если первый больше второго, нужно поменять их местами. В противном случае никаких изменений производить не придется.</li>
15
<li>Теперь берется второй элемент в массиве. Он сравнивается со следующим - третьим. Если второй компонент больше, они меняются местами.</li>
15
<li>Теперь берется второй элемент в массиве. Он сравнивается со следующим - третьим. Если второй компонент больше, они меняются местами.</li>
16
<li>Подобные операции сравнения и изменения положения элементов в массиве осуществляются до самой последней составляющей. В конце будет наибольшее число заданной последовательности.</li>
16
<li>Подобные операции сравнения и изменения положения элементов в массиве осуществляются до самой последней составляющей. В конце будет наибольшее число заданной последовательности.</li>
17
<li>Система возвращается в самое начало алгоритма. Все описанные ранее действия выполняются снова, начиная с первого и второго элемента. Разница заключается в том, что последний компонент проверять нет необходимости - он уже стоит на месте.</li>
17
<li>Система возвращается в самое начало алгоритма. Все описанные ранее действия выполняются снова, начиная с первого и второго элемента. Разница заключается в том, что последний компонент проверять нет необходимости - он уже стоит на месте.</li>
18
<li>Как только заканчивается очередная итерация, значение финальной позиции, до которой осуществляется проверка, уменьшается. Алгоритм воспроизводится с новыми данными.</li>
18
<li>Как только заканчивается очередная итерация, значение финальной позиции, до которой осуществляется проверка, уменьшается. Алгоритм воспроизводится с новыми данными.</li>
19
<li>Описанные действия должны продолжаться до тех пор, пока не останется всего один элемент. Он окажется минимальным во всей заданной последовательности.</li>
19
<li>Описанные действия должны продолжаться до тех пор, пока не останется всего один элемент. Он окажется минимальным во всей заданной последовательности.</li>
20
</ol><p>Предложенная концепция позволит упорядочить данные по возрастанию. Чем меньше окажется первоначальная последовательность чисел, тем быстрее будет работать метод.</p>
20
</ol><p>Предложенная концепция позволит упорядочить данные по возрастанию. Чем меньше окажется первоначальная последовательность чисел, тем быстрее будет работать метод.</p>
21
<h3>Эффективность</h3>
21
<h3>Эффективность</h3>
22
<p>Рассматриваемая концепция упорядочивания называется "учебной". Она присутствует в учебниках по математике и информатике, но в реальной жизни практически не встречается. Связано это с необходимым количеством проверок и перестановок в заданном неупорядоченном множестве. Соответствующее число - это количество элементов последовательности в квадрате. Пример - для 10 чисел нужно будет 100 проверок, для 100 - 10 0000 и так далее.</p>
22
<p>Рассматриваемая концепция упорядочивания называется "учебной". Она присутствует в учебниках по математике и информатике, но в реальной жизни практически не встречается. Связано это с необходимым количеством проверок и перестановок в заданном неупорядоченном множестве. Соответствующее число - это количество элементов последовательности в квадрате. Пример - для 10 чисел нужно будет 100 проверок, для 100 - 10 0000 и так далее.</p>
23
<p>Программирование предусматривает оценку эффективности работы алгоритма в зависимости от количества элементов n. Обозначается она как O(n). Пузырьковая сортировка имеет эффективность O(n2.). Если сравнивать этот показатель с некоторыми другими методами упорядочивания, он будет относительно большим. Это значит, что чем больше показатель эффективности, тем дольше алгоритм будет обрабатывать заданную последовательность.</p>
23
<p>Программирование предусматривает оценку эффективности работы алгоритма в зависимости от количества элементов n. Обозначается она как O(n). Пузырьковая сортировка имеет эффективность O(n2.). Если сравнивать этот показатель с некоторыми другими методами упорядочивания, он будет относительно большим. Это значит, что чем больше показатель эффективности, тем дольше алгоритм будет обрабатывать заданную последовательность.</p>
24
<h2>Как реализуется</h2>
24
<h2>Как реализуется</h2>
25
<p>Теперь можно рассмотреть bubblesort на наглядном примере. Данная концепция хорошо реализуется во всех языках программирования. Ниже будет приведен фрагмент на Java. Этот язык выбран ввиду его широкого распространения.</p>
25
<p>Теперь можно рассмотреть bubblesort на наглядном примере. Данная концепция хорошо реализуется во всех языках программирования. Ниже будет приведен фрагмент на Java. Этот язык выбран ввиду его широкого распространения.</p>
26
<p>Код программы имеет следующие особенности:</p>
26
<p>Код программы имеет следующие особенности:</p>
27
<ul><li>формируется массив из 5-ти составляющих;</li>
27
<ul><li>формируется массив из 5-ти составляющих;</li>
28
<li>в заданное множество загружаются числовые данные;</li>
28
<li>в заданное множество загружаются числовые данные;</li>
29
<li>на экране выводится содержимое массива;</li>
29
<li>на экране выводится содержимое массива;</li>
30
<li>осуществляется bubble sort;</li>
30
<li>осуществляется bubble sort;</li>
31
<li>происходит повторный вывод отсортированных цифровых материалов на экране.</li>
31
<li>происходит повторный вывод отсортированных цифровых материалов на экране.</li>
32
</ul><p>Вот так будет выглядеть соответствующий фрагмент приложения. Его можно загрузить в IDE и посмотреть на результат:</p>
32
</ul><p>Вот так будет выглядеть соответствующий фрагмент приложения. Его можно загрузить в IDE и посмотреть на результат:</p>
33
<p>Несмотря на наличие комментариев в коде, его лучше разобрать более подробно.</p>
33
<p>Несмотря на наличие комментариев в коде, его лучше разобрать более подробно.</p>
34
<h3>Разбор кода</h3>
34
<h3>Разбор кода</h3>
35
<p>В предложенном выше фрагменте основная работа сконцентрирована в классе ArrayBubble. Он включает в себя конструктор, а также несколько методов:</p>
35
<p>В предложенном выше фрагменте основная работа сконцентрирована в классе ArrayBubble. Он включает в себя конструктор, а также несколько методов:</p>
36
<ul><li>printer - используется для построчного выведения массива на дисплей;</li>
36
<ul><li>printer - используется для построчного выведения массива на дисплей;</li>
37
<li>into - метод, который используется для вставки компонентов в заданное неупорядоченное множество;</li>
37
<li>into - метод, который используется для вставки компонентов в заданное неупорядоченное множество;</li>
38
<li>toSwap - используется для переставления компонентов заданной последовательности местами в случае необходимости;</li>
38
<li>toSwap - используется для переставления компонентов заданной последовательности местами в случае необходимости;</li>
39
<li>dummy - временная переменная, в которую записывается значение числа, которое будет меняться местами со вторым значением</li>
39
<li>dummy - временная переменная, в которую записывается значение числа, которое будет меняться местами со вторым значением</li>
40
<li>bubbleSorter - ключевой метод, который осуществляет основную работу и сортирует данные, хранящиеся в неупорядоченном множестве.</li>
40
<li>bubbleSorter - ключевой метод, который осуществляет основную работу и сортирует данные, хранящиеся в неупорядоченном множестве.</li>
41
</ul><p>Вот фрагмент bubbleSort. Он требует дополнительного разбора:</p>
41
</ul><p>Вот фрагмент bubbleSort. Он требует дополнительного разбора:</p>
42
<p>Особое внимание необходимо уделить двум счетчикам: out и in.</p>
42
<p>Особое внимание необходимо уделить двум счетчикам: out и in.</p>
43
<p>Внешний счетчик (out) отвечает за начало перебора значений с конца массива и постепенно уменьшается. С каждой новой итерацией первоначальное значение становится меньше на единицу. Переменная out будет смещаться в левую сторону. Это необходимо, чтобы не затрагивать значения, которые уже отсортированы в правой части последовательности.</p>
43
<p>Внешний счетчик (out) отвечает за начало перебора значений с конца массива и постепенно уменьшается. С каждой новой итерацией первоначальное значение становится меньше на единицу. Переменная out будет смещаться в левую сторону. Это необходимо, чтобы не затрагивать значения, которые уже отсортированы в правой части последовательности.</p>
44
<p>Внутренний счетчик сортировки пузырьком (in) начинает перебор значений с самого начала и увеличивается на единицу. Происходит операция с каждой новой итерацией. In увеличивается до тех пор, пока не будет достигнут out - последний анализируемый на текущем проходе компонент). Внутренний цикл in сравнивает две соседние ячейки (in и in+1). Если в in хранится значение больше числа, размещенного в in+1, происходит вызов метода toSwap. Он поменяет параметры местами.</p>
44
<p>Внутренний счетчик сортировки пузырьком (in) начинает перебор значений с самого начала и увеличивается на единицу. Происходит операция с каждой новой итерацией. In увеличивается до тех пор, пока не будет достигнут out - последний анализируемый на текущем проходе компонент). Внутренний цикл in сравнивает две соседние ячейки (in и in+1). Если в in хранится значение больше числа, размещенного в in+1, происходит вызов метода toSwap. Он поменяет параметры местами.</p>
45
<h2>Прочие известные алгоритмы упорядочивания</h2>
45
<h2>Прочие известные алгоритмы упорядочивания</h2>
46
<p>Алгоритм сортировки пузырьком уже был рассмотрен и изучен. Это не единственная концепция, которая используется разработчиками при программировании приложений. BubbleSort - подход, встречающийся преимущественно в процессе обучения или в мелких проектах с небольшими последовательностями. Он является относительно медленным, поэтому его практическое применение редко бывает оправданным.</p>
46
<p>Алгоритм сортировки пузырьком уже был рассмотрен и изучен. Это не единственная концепция, которая используется разработчиками при программировании приложений. BubbleSort - подход, встречающийся преимущественно в процессе обучения или в мелких проектах с небольшими последовательностями. Он является относительно медленным, поэтому его практическое применение редко бывает оправданным.</p>
47
<p>Bubble Sort заложен в основу большинства других методов сортировки элементов. Вот наиболее распространенные из них:</p>
47
<p>Bubble Sort заложен в основу большинства других методов сортировки элементов. Вот наиболее распространенные из них:</p>
48
<ol><li>Сортировка выбором. Концепция, которая сначала ищет наименьший элемент в заданной последовательности и ставит его на позицию, откуда начался проход. Далее предстоит передвинуться на следующую позицию.</li>
48
<ol><li>Сортировка выбором. Концепция, которая сначала ищет наименьший элемент в заданной последовательности и ставит его на позицию, откуда начался проход. Далее предстоит передвинуться на следующую позицию.</li>
49
<li>Вставки. Концепция разделяет изначальное множество на сортированный и несортированный подмассив. Длина первой части в самом начале равна единице. Это соответствует левому (первому) значению в последовательности. Далее нужно итерировать множество и расширять сортированную часть. С каждым проходом цикла он увеличивается на +1. После расширения новый компонент помещается на свое место в подмассиве. Результат достигается при помощи сдвига всех составляющих вправо. Происходит это до тех пор, пока не встретится элемент, не требующий сдвига.</li>
49
<li>Вставки. Концепция разделяет изначальное множество на сортированный и несортированный подмассив. Длина первой части в самом начале равна единице. Это соответствует левому (первому) значению в последовательности. Далее нужно итерировать множество и расширять сортированную часть. С каждым проходом цикла он увеличивается на +1. После расширения новый компонент помещается на свое место в подмассиве. Результат достигается при помощи сдвига всех составляющих вправо. Происходит это до тех пор, пока не встретится элемент, не требующий сдвига.</li>
50
<li>Пирамида. Чтобы понимать принцип работы этого вида сортировки, нужно разобраться в том, что собой представляет двоичная куча (пирамида). Это дерево, в котором каждый узел состоит в отношениях с дочерними узлами. Добавление нового узла начинается с левой позиции нижнего неполного уровня. По мере движения вниз по дереву значения уменьшаются (min-heap) или увеличиваются (max-heap). Чтение графа сверху-вниз представлено слева-направо.</li>
50
<li>Пирамида. Чтобы понимать принцип работы этого вида сортировки, нужно разобраться в том, что собой представляет двоичная куча (пирамида). Это дерево, в котором каждый узел состоит в отношениях с дочерними узлами. Добавление нового узла начинается с левой позиции нижнего неполного уровня. По мере движения вниз по дереву значения уменьшаются (min-heap) или увеличиваются (max-heap). Чтение графа сверху-вниз представлено слева-направо.</li>
51
</ol><p>Вот пирамида:</p>
51
</ol><p>Вот пирамида:</p>
52
<p>Чтобы концепция работала, нужно, чтобы каждый дочерний элемент от рассматриваемого имел меньшее значения. Если правило соблюдается, один из дочерних компонентов меняется с родительским, после чего повторяется рекурсия с новым "родителем". Выглядит это так:</p>
52
<p>Чтобы концепция работала, нужно, чтобы каждый дочерний элемент от рассматриваемого имел меньшее значения. Если правило соблюдается, один из дочерних компонентов меняется с родительским, после чего повторяется рекурсия с новым "родителем". Выглядит это так:</p>
53
<p>Bubble Sort и другие алгоритмы сортировки получится более подробно изучить при помощи специализированных<a>компьютерных курсов по алгоритмам</a>. Выбрать можно любой интересующий язык программирования.</p>
53
<p>Bubble Sort и другие алгоритмы сортировки получится более подробно изучить при помощи специализированных<a>компьютерных курсов по алгоритмам</a>. Выбрать можно любой интересующий язык программирования.</p>
54
54