Оба алгоритма на каждом проходе по массиву гарантированно ставят на своё место один элемент, потому каждый следующий проход совершается по подмассиву на один элемент короче: анализируется только та часть, в которой могут находится ещё не отсортированные элементы (от всех N элементов на первом проходе, до 2 элементов на последнем).
Сортировка простым выбором: на каждом проходе выбираем из оставшийся части массива минимальный (максимальный) элемент и по окончании прохода ставим его на положенное место (меняя местами с тем элементом, который занимает это место). Для массива длиной N алгоритм требует ровно N * (N - 1) / 2 сравнений и N - 1 обменов (кол-во обменов можно уменьшить за счёт дополнительного сравнения после прохода индексов меняемых элементов). При этом необходимо выполнить все N - 1 проходов по массиву (алгоритм не может определить, что массив уже отсортирован и дальнейшая обработка не нужна).
Пузырьковая сортировка: на каждом проходе меняем местами все соседние элементы, расположенные в неправильном порядке. Алгоритм можно закончить досрочно - как только на очередном проходе не было ни одного обмена, потому требуется от 1 до N - 1 проходов. И если для сортировки выбором кол-во сравнений/обменов фиксировано, то для пузырьковой сортировки оно зависит от входных данных:
В худшем случае (массив отсортирован в обратном порядке) будет N * (N - 1) / 2 сравнений и N * (N - 1) / 2 обменов - намного хуже, чем сортировка выбором.
В лучшем случае (массив уже правильно отсортирован) Будет N - 1 сравнений и 0 обменов - намного лучше, чем сортировка выбором.
Кстати, оптимизированным вариантом пузырьковой сортировки является быстрая сортировка (QuickSort), а оптимизированным вариантом сортировки выбором - пирамидальная сортировка (HeapSort).
Другие языки программирования и технологии
Сортировка пузырьком и выбором - это одно и тоже?
я пытался, но вот тебе адекватное из хабра
Selection sort (сортировка выбором) – суть алгоритма заключается в проходе по массиву от начала до конца в поиске минимального элемента массива и перемещении его в начало. Сложность такого алгоритма O(n2).
Bubble sort (сортировка пузырьком) – данный алгоритм меняет местами два соседних элемента, если первый элемент массива больше второго. Так происходит до тех пор, пока алгоритм не обменяет местами все неотсортированные элементы. Сложность данного алгоритма сортировки равна O(n^2).
Selection sort (сортировка выбором) – суть алгоритма заключается в проходе по массиву от начала до конца в поиске минимального элемента массива и перемещении его в начало. Сложность такого алгоритма O(n2).
Bubble sort (сортировка пузырьком) – данный алгоритм меняет местами два соседних элемента, если первый элемент массива больше второго. Так происходит до тех пор, пока алгоритм не обменяет местами все неотсортированные элементы. Сложность данного алгоритма сортировки равна O(n^2).
Похожие вопросы
- Сортировка массива методом выбора.
- Сортировка методом пузырька. Си.
- Помогите с массивом и сортировкой методом пузырька в языке Си! Прогу надо сдать в пятницу срочно, не знаю как начать!
- Сортировка массива "пузырьком" Объясните вкратце, что подразумевается под "пузырьком". Трусы постираю тому, кто объяснит
- Помогите найти ошибку в задаче, сортировка методом пузырька работает неправильно.
- Срочно нужна сортировка методом пузырька на с++. Срочносрочносрочно
- Изучил несколько простых алгоритмов сортировки, осталось изучить быструю и слияние, нужно ли вообще писать эти алгоритмы
- Сортировки, язык Си.
- C++ Сортировка в сортировке вектора экземпляров структуры
- Сортировка простыми вставками.