Введение

Когда дело доходит до сортировки, мы часто думаем о сортировке вставками как о глупом родственнике более популярных и ярких алгоритмов, таких как быстрая сортировка и сортировка слиянием. Но не позволяйте его скромному поведению обмануть вас — сортировка вставками может быть не самым быстрым или эффективным алгоритмом, но его определенно стоит изучить.

Просто подумайте об этом — когда вы в последний раз были на вечеринке, и кто-то вытащил колоду карт и начал делать быструю сортировку? Никогда, верно? Но держу пари, вы хоть раз видели, как кто-то выполняет сортировку вставками.

Так что не бойтесь давать сортировке вставками шанс — это может быть не самый крутой ребенок в этом квартале, но он определенно выполнит свою работу. Кроме того, это отличный способ произвести впечатление на ваших друзей и семью своими сумасшедшими навыками сортировки. Попробуйте и убедитесь сами!

При изучении сортировки вставками важно помнить о следующих моментах:

  1. Поймите основной принцип алгоритма: сортировка вставками работает путем разделения входного массива на две части — отсортированную часть и несортированную часть. На каждой итерации он берет элемент из несортированной части и вставляет его в правильную позицию в отсортированной части, так что отсортированная часть остается отсортированной. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.
  2. Обратите внимание на инвариант цикла: ключом к пониманию сортировки вставками является признание того, что инвариант цикла — условие, которое должно выполняться в начале каждой итерации — заключается в том, что элементы в отсортированной части массива находятся в правильном порядке. . Этот инвариант поддерживается алгоритмом и гарантирует, что массив будет полностью отсортирован в конце алгоритма.
  3. Знайте характеристики алгоритма: хотя сортировка вставками имеет относительно простую реализацию, это не самый эффективный алгоритм сортировки с точки зрения временной сложности. В худшем случае он имеет временную сложность O(n²), что означает, что сортировка больших массивов может занять много времени. Однако у него есть то преимущество, что он является стабильным алгоритмом сортировки, а это означает, что элементы с одинаковым значением сохранят свой относительный порядок в отсортированном массиве.
  4. Практикуйтесь в реализации алгоритма: как и в случае с любым алгоритмом, лучший способ изучить сортировку вставками — это попрактиковаться в ее реализации. Начните с написания алгоритма в псевдокоде, а затем попробуйте реализовать его на выбранном вами языке программирования. Протестируйте свою реализацию на различных входных массивах, чтобы убедиться, что она работает правильно, и попытайтесь оптимизировать свой код для повышения производительности.

Сортировка вставками — это простой алгоритм сортировки, который работает путем разделения входного массива на две части — отсортированную часть и несортированную часть. На каждой итерации он берет элемент из несортированной части и вставляет его в правильную позицию в отсортированной части, так что отсортированная часть остается отсортированной. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.

Например, если у нас есть следующий массив: [5, 3, 8, 1, 9, 6]

  • В первой итерации отсортированная часть содержит только первый элемент (5), а несортированная часть содержит остальные элементы (3, 8, 1, 9, 6). Алгоритм берет второй элемент (3) из несортированной части и вставляет его в правильную позицию в отсортированной части (в данном случае перед 5), в результате чего получается массив [3, 5, 8, 1, 9, 6] .
  • Во второй итерации отсортированная часть содержит первые два элемента (3, 5), а несортированная часть содержит оставшиеся элементы (8, 1, 9, 6). Алгоритм берет третий элемент (8) из несортированной части и вставляет его в правильную позицию в отсортированной части (в данном случае после 5 и до 8), в результате чего получается массив [3, 5, 8, 1, 9 , 6].
  • Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован, в результате чего получится окончательный массив [1, 3, 5, 6, 8, 9].

В целом, сортировка вставками — это простой и интуитивно понятный алгоритм, который может быть полезен для сортировки небольших массивов или частично отсортированных массивов. Однако это не самый эффективный алгоритм с точки зрения временной сложности, поэтому он может быть не лучшим выбором для сортировки больших массивов.

Вот пример использования сортировки выбором для сортировки массива целых чисел в Python:

def selection_sort(array):
    # Iterate over the entire array
    for i in range(len(array)):
        # Assume that the first element in the unsorted portion of the array is the smallest
        min_index = i
        # Iterate over the unsorted portion of the array to find the smallest element
        for j in range(i + 1, len(array)):
            if array[j] < array[min_index]:
                min_index = j
        # Swap the smallest element with the first element in the unsorted portion
        array[i], array[min_index] = array[min_index], array[i]


# Test the sorting algorithm
array = [5, 3, 8, 1, 9, 6]
selection_sort(array)
print(array) # [1, 3, 5, 6, 8, 9]

В этом коде алгоритм сортировки выбором перебирает весь массив, чтобы найти наименьший элемент в несортированной части массива, а затем меняет его местами с первым элементом в несортированной части. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.

Применение сортировки выбором к различным задачам сортировки

  1. Учитывая массив целых чисел, реализуйте алгоритм сортировки выбором для сортировки массива в порядке возрастания.
  2. Предположим, у вас есть список сотрудников, и вы хотите отсортировать сотрудников по их должности. Напишите функцию для сортировки сотрудников с помощью алгоритма сортировки выбором.
  3. Вам дан список имен учеников, и вы хотите отсортировать имена в алфавитном порядке. Напишите функцию для сортировки имен с использованием алгоритма сортировки выбором.