Python - Сортировка массивов

Привет, начинающие программисты на Python! Сегодня мы погрузимся в увлекательный мир сортировки массивов в Python. Не волнуйтесь, если вы новичок в программировании – я веду вас по каждому шагу с множеством примеров и пояснений. К концу этого урока вы будете сортировать массивы как профессионал!

Python - Sort Arrays

Что такое массив в 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)

Разберем это:

  1. Мы определяем функцию с названием bubble_sort, которая принимает массив (список) в качестве входного параметра.
  2. Мы получаем длину массива и сохраняем ее в n.
  3. Мы используем два вложенных цикла для сравнения соседних элементов.
  4. Если элемент больше следующего, мы их меняем местами.
  5. Мы повторяем этот процесс до тех пор, пока весь массив не будет отсортирован.

Когда вы выполните этот код, вы увидите:

Отсортированный массив: [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