Python - Сортировка массивов
Привет, начинающие программисты на Python! Сегодня мы погрузимся в увлекательный мир сортировки массивов в Python. Не волнуйтесь, если вы новичок в программировании – я веду вас по каждому шагу с множеством примеров и пояснений. К концу этого урока вы будете сортировать массивы как профессионал!
Что такое массив в Python?
Перед тем как перейти к сортировке, давайте быстро разберемся, что такое массив в Python. В Python мы обычно используем списки для представления массивов. Список – это коллекция элементов, которые могут быть разных типов. Например:
fruits = ["apple", "banana", "cherry", "date"]
numbers = [42, 8, 15, 16, 23]
Сортировка массивов с использованием алгоритма сортировки
Начнем с базового алгоритма сортировки, называемого Пузырьковая сортировка. Это не самый эффективный метод, но он легко понятен для начинающих.
Пузырьковая сортировка
Вот простая реализация Пузырьковой сортировки:
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]
return arr
# Пример использования
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = bubble_sort(numbers)
print("Отсортированный массив:", sorted_numbers)
Разберем это:
- Мы определяем функцию с названием
bubble_sort
, которая принимает массив (список) в качестве входного параметра. - Мы получаем длину массива и сохраняем ее в
n
. - Мы используем два вложенных цикла для сравнения соседних элементов.
- Если элемент больше следующего, мы их меняем местами.
- Мы повторяем этот процесс до тех пор, пока весь массив не будет отсортирован.
Когда вы выполните этот код, вы увидите:
Отсортированный массив: [11, 12, 22, 25, 34, 64, 90]
Интересный факт: Пузырьковая сортировка называется так, потому что меньшие элементы "вспучиваются" к вершине списка с каждой итерацией!
Сортировка массивов с использованием метода sort() списка
Списки в Python имеют встроенный метод sort()
, который значительно упрощает сортировку. Давайте посмотрим, как он работает:
# Сортировка чисел
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort()
print("Отсортированные числа:", numbers)
# Сортировка строк
fruits = ["banana", "cherry", "apple", "date"]
fruits.sort()
print("Отсортированные фрукты:", fruits)
Вывод:
Отсортированные числа: [11, 12, 22, 25, 34, 64, 90]
Отсортированные фрукты: ['apple', 'banana', 'cherry', 'date']
Метод sort()
изменяет исходный список. Это как уборка в вашей комнате – все в конечном итоге упорядочено, но это все равно ваша комната!
Сортировка в обратном порядке
Вы также можете сортировать в обратном порядке, добавив параметр reverse=True
:
numbers = [64, 34, 25, 12, 22, 11, 90]
numbers.sort(reverse=True)
print("Отсортированные числа (в обратном порядке):", numbers)
Вывод:
Отсортированные числа (в обратном порядке): [90, 64, 34, 25, 22, 12, 11]
Сортировка массивов с использованием функции sorted()
Функция sorted()
– это еще один мощный инструмент в Python для сортировки. В отличие от sort()
, она не изменяет исходный список, а возвращает новый отсортированный список.
# Сортировка чисел
numbers = [64, 34, 25, 12, 22, 11, 90]
sorted_numbers = sorted(numbers)
print("Исходные числа:", numbers)
print("Отсортированные числа:", sorted_numbers)
# Сортировка строк
fruits = ["banana", "cherry", "apple", "date"]
sorted_fruits = sorted(fruits)
print("Исходные фрукты:", fruits)
print("Отсортированные фрукты:", sorted_fruits)
Вывод:
Исходные числа: [64, 34, 25, 12, 22, 11, 90]
Отсортированные числа: [11, 12, 22, 25, 34, 64, 90]
Исходные фрукты: ['banana', 'cherry', 'apple', 'date']
Отсортированные фрукты: ['apple', 'banana', 'cherry', 'date']
Представьте sorted()
как создание копии вашего списка и сортировка этой копии, оставляя оригинал нетронутым. Это как сделать фотографию вашей непорядочной комнаты, затем упорядочить все на фото, а ваша реальная комната останется такой же!
Сортировка с использованием пользовательских ключей
Одна из самых интересных функций sorted()
– возможность использования пользовательских ключей сортировки. Давайте предположим, что мы хотим отсортировать список слов по их длине:
words = ["python", "is", "awesome", "and", "fun"]
sorted_words = sorted(words, key=len)
print("Отсортированные по длине:", sorted_words)
Вывод:
Отсортированные по длине: ['is', 'and', 'fun', 'python', 'awesome']
Здесь мы использовали функцию len
в качестве функции ключа. Python применяет эту функцию к каждому элементу и сортирует на основе полученного результата.
Сравнение методов сортировки
Разберем методы сортировки, которые мы изучили, в удобной таблице:
Метод | Изменяет оригинал | Возвращает новый список | Может использовать пользовательский ключ |
---|---|---|---|
Пузырьковая сортировка | Да | Нет | Нет |
list.sort() |
Да | Нет | Да |
sorted() |
Нет | Да | Да |
Заключение
Поздравляем! Вы только что изучили несколько способов сортировки массивов в Python. От реализации своего собственного алгоритма сортировки до использования встроенных методов Python, у вас теперь есть инструменты для организации ваших данных.
Помните, сортировка – это как упорядочивание книг на полке – есть множество способов это сделать, и лучший метод зависит от того, что вы хотите достичь. Практикуйтесь с различными типами данных и методами сортировки, чтобы стать мастером сортировки в Python!
Счастливого кодирования, и愿 ваши массивы всегда были идеально отсортированы! ??
Credits: Image by storyset