Метод сортировки, который описывается как "камень", напоминает один из простейших алгоритмов сортировки, известный как "пузырьковая сортировка" (Bubble Sort). В этом методе самый "тяжёлый" элемент (наибольший по значению) в процессе одного прохода по массиву "опускается" в конец. Давайте разберём, как можно реализовать этот алгоритм на языке Python.
Пузырьковая сортировка
Пузырьковая сортировка работает следующим образом:
- Проходим по массиву от начала до конца.
- Сравниваем каждую пару соседних элементов.
- Если текущий элемент больше следующего, меняем их местами.
- В результате первого прохода самый большой элемент оказывается в последней позиции массива.
- Повторяем процесс для оставшейся части массива (исключая уже отсортированные элементы).
Этот процесс повторяется до тех пор, пока массив не будет полностью отсортирован.
Пример реализации на Python
def bubble_sort(arr):
n = len(arr)
# Внешний цикл проходит по всему массиву
for i in range(n):
# Внутренний цикл для сравнения соседних элементов
for j in range(0, n - i - 1):
# Меняем местами, если текущий элемент больше следующего
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# Выводим состояние массива после каждого внешнего цикла (опционально)
print(f"После {i+1}-го прохода: {arr}")
# Пример использования
array = [64, 34, 25, 12, 22, 11, 90]
print("Исходный массив:", array)
bubble_sort(array)
print("Отсортированный массив:", array)
Разбор работы программы
- Исходный массив: Мы начинаем с неотсортированного массива.
- Циклы: Внешний цикл
for i in range(n)
повторяет процесс сортировки для каждого элемента, уменьшая количество элементов, которые нужно проверить, на каждом шаге, так как правый край массива уже отсортирован.
- Внутренний цикл
for j in range(0, n - i - 1)
: Этот цикл выполняет сравнение и обмен для всех пар элементов в неотсортированной части массива.
- Обмен местами: Если текущий элемент больше следующего, они меняются местами, "пузырёк" (или в вашем случае "камень") поднимается вверх.
- Вывод состояния массива: После каждого внешнего прохода можно наблюдать, как самый большой элемент опускается в конец массива.
Оценка эффективности
Пузырьковая сортировка имеет временную сложность O(n^2) в худшем и среднем случаях, что делает её неэффективной для больших наборов данных. Однако она проста в реализации и может быть полезна для образовательных целей или небольших массивов.
Таким образом, метод "камня", как вы его назвали, аналогичен пузырьковой сортировке, где "тяжелые" элементы постепенно "оседают" на своих местах в конце массива.