Введение
Когда дело доходит до сортировки, мы часто думаем о сортировке вставками как о глупом родственнике более популярных и ярких алгоритмов, таких как быстрая сортировка и сортировка слиянием. Но не позволяйте его скромному поведению обмануть вас — сортировка вставками может быть не самым быстрым или эффективным алгоритмом, но его определенно стоит изучить.
Просто подумайте об этом — когда вы в последний раз были на вечеринке, и кто-то вытащил колоду карт и начал делать быструю сортировку? Никогда, верно? Но держу пари, вы хоть раз видели, как кто-то выполняет сортировку вставками.
Так что не бойтесь давать сортировке вставками шанс — это может быть не самый крутой ребенок в этом квартале, но он определенно выполнит свою работу. Кроме того, это отличный способ произвести впечатление на ваших друзей и семью своими сумасшедшими навыками сортировки. Попробуйте и убедитесь сами!
При изучении сортировки вставками важно помнить о следующих моментах:
- Поймите основной принцип алгоритма: сортировка вставками работает путем разделения входного массива на две части — отсортированную часть и несортированную часть. На каждой итерации он берет элемент из несортированной части и вставляет его в правильную позицию в отсортированной части, так что отсортированная часть остается отсортированной. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.
- Обратите внимание на инвариант цикла: ключом к пониманию сортировки вставками является признание того, что инвариант цикла — условие, которое должно выполняться в начале каждой итерации — заключается в том, что элементы в отсортированной части массива находятся в правильном порядке. . Этот инвариант поддерживается алгоритмом и гарантирует, что массив будет полностью отсортирован в конце алгоритма.
- Знайте характеристики алгоритма: хотя сортировка вставками имеет относительно простую реализацию, это не самый эффективный алгоритм сортировки с точки зрения временной сложности. В худшем случае он имеет временную сложность O(n²), что означает, что сортировка больших массивов может занять много времени. Однако у него есть то преимущество, что он является стабильным алгоритмом сортировки, а это означает, что элементы с одинаковым значением сохранят свой относительный порядок в отсортированном массиве.
- Практикуйтесь в реализации алгоритма: как и в случае с любым алгоритмом, лучший способ изучить сортировку вставками — это попрактиковаться в ее реализации. Начните с написания алгоритма в псевдокоде, а затем попробуйте реализовать его на выбранном вами языке программирования. Протестируйте свою реализацию на различных входных массивах, чтобы убедиться, что она работает правильно, и попытайтесь оптимизировать свой код для повышения производительности.
Сортировка вставками — это простой алгоритм сортировки, который работает путем разделения входного массива на две части — отсортированную часть и несортированную часть. На каждой итерации он берет элемент из несортированной части и вставляет его в правильную позицию в отсортированной части, так что отсортированная часть остается отсортированной. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.
Например, если у нас есть следующий массив: [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]
В этом коде алгоритм сортировки выбором перебирает весь массив, чтобы найти наименьший элемент в несортированной части массива, а затем меняет его местами с первым элементом в несортированной части. Этот процесс продолжается до тех пор, пока весь массив не будет отсортирован.
Применение сортировки выбором к различным задачам сортировки
- Учитывая массив целых чисел, реализуйте алгоритм сортировки выбором для сортировки массива в порядке возрастания.
- Предположим, у вас есть список сотрудников, и вы хотите отсортировать сотрудников по их должности. Напишите функцию для сортировки сотрудников с помощью алгоритма сортировки выбором.
- Вам дан список имен учеников, и вы хотите отсортировать имена в алфавитном порядке. Напишите функцию для сортировки имен с использованием алгоритма сортировки выбором.