HTML Diff
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