Введение в алгоритм сортировки вставкой

Введение в алгоритм сортировки вставкой

Сортировка вставкой - это метод, который работает, используя отсортированный подсписок и непрерывно добавляя к нему значение из несортированного списка, пока не будет отсортирован весь список.





Алгоритм начинается с первого элемента списка как отсортированного подсписка. Затем он сравнивает следующее число с первым. Если он больше, то он вставляется в первый индекс. В противном случае он остается в своем индексе.





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





Более пристальный взгляд на сортировку вставкой

Приведенное выше описание могло не иметь для вас смысла. Пример должен помочь вам лучше понять.

Предположим, у вас есть список: [39, 6, 2, 51, 30, 42, 7].



Алгоритм определяет 39 как первое значение отсортированного подсписка. Затем оценка переходит на вторую позицию.

Связанный: Динамическое программирование: примеры, общие проблемы и решения





Затем 6 сравнивается с 39. Поскольку 6 меньше 39, 6 вставляется в первую позицию, а 39 - во вторую. Новый порядок в списке после первого прохода:

[6, 39, 2, 51, 30, 42, 7]





Теперь оценка переходит на третью позицию. 2 сравнивается с двумя последними числами и затем вставляется в правильную позицию. Новый порядок в списке после второго прохода:

[2, 6, 39, 51, 30, 42, 7]

Для третьего прохода порядок списка следующий:

[2, 6, 39, 51, 30, 42, 7]

Процесс повторяется до тех пор, пока не будет отсортирован весь список.

См. Диаграмму ниже, на которой резюмируются эти операции:

Алгоритм анализа

Временная сложность сортировки вставкой составляет O (n2), как пузырьковая сортировка . Количество сравнений в наихудшем сценарии - это сумма всех целых чисел от 1 до (n-1), дающая квадратичную сумму.

Реализация кода

В приведенном ниже коде Python и Java показано, как можно реализовать метод сортировки вставкой.

Python:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

Джава:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

Лучшее кодирование с помощью псевдокода

Приведенные выше примеры кода были даны без какого-либо псевдокода, на который вы можете ссылаться, чтобы написать этот алгоритм на других языках. Большинство программистов (включая автора) любят подбегать к клавиатуре после того, как им говорят «шепотом» о том, как работает программа.

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

Делиться Делиться Твитнуть Эл. адрес Что такое псевдокод и как он делает вас лучшим разработчиком?

Пытаетесь изучить программирование? Разберитесь с кодом, изучив псевдокод. Но что такое псевдокод и может ли он помочь?

Читать далее
Похожие темы
  • Программирование
  • Джава
  • Python
  • Учебники по кодированию
Об авторе Джером Дэвидсон(Опубликовано 22 статей)

Джером - штатный писатель в MakeUseOf. Он освещает статьи по программированию и Linux. Он также криптоэнтузиаст и всегда следит за криптоиндустрией.

как отправить местоположение булавки
Ещё от Jerome Davidson

Подписывайтесь на нашу новостную рассылку

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

Нажмите здесь, чтобы подписаться