Сортировка вставкой структуры данных и алгоритмов

Это алгоритм сортировки на основе сравнения на месте. Здесь ведется подсписок, который всегда отсортирован. Например, нижняя часть массива поддерживается для сортировки. Элемент, который должен быть «вставлен» в этот отсортированный подсписок, должен найти свое подходящее место, а затем он должен быть вставлен туда. Отсюда и название,insertion sort.

Поиск в массиве выполняется последовательно, а несортированные элементы перемещаются и вставляются в отсортированный подсписок (в том же массиве). Этот алгоритм не подходит для больших наборов данных, поскольку его средняя и наихудшая сложность составляет (n 2 ), гдеn количество элементов.

Как работает сортировка вставкой?

В качестве примера возьмем несортированный массив.

Сортировка вставкой сравнивает первые два элемента.

Он обнаружил, что 14 и 33 уже находятся в порядке возрастания. На данный момент 14 находится в отсортированном подсписке.

Сортировка вставкой продвигается вперед и сравнивает 33 с 27.

И обнаруживает, что 33 не в правильном положении.

Он меняет местами 33 на 27. Он также проверяет все элементы отсортированного подсписка. Здесь мы видим, что отсортированный подсписок имеет только один элемент 14, а 27 больше 14. Следовательно, отсортированный подсписок остается отсортированным после обмена.

К настоящему времени в отсортированном подсписке есть 14 и 27. Затем он сравнивает 33 с 10.

Эти значения не отсортированы.

Мы их меняем местами.

Однако свопинг составляет 27 и 10 несортированных.

Следовательно, мы их тоже меняем местами.

Снова мы находим 14 и 10 в несортированном порядке.

Мы снова их меняем местами. К концу третьей итерации у нас есть отсортированный подсписок из 4 пунктов.

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

Алгоритм

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

Step 1 − If it is the first element, it is already sorted. return 1;
Step 2 − Pick next element
Step 3 − Compare with all elements in the sorted sub-list
Step 4 − Shift all the elements in the sorted sub-list that is greater than the 
         value to be sorted
Step 5 − Insert the value
Step 6 − Repeat until list is sorted

Псевдокод

procedure insertionSort( A : array of items )
   int holePosition
   int valueToInsert
	
   for i = 1 to length(A) inclusive do:
	
      /* select value to be inserted */
      valueToInsert = A[i]
      holePosition = i
      
      /*locate hole position for the element to be inserted */
		
      while holePosition > 0 and A[holePosition-1] > valueToInsert do:
         A[holePosition] = A[holePosition-1]
         holePosition = holePosition -1
      end while
		
      /* insert the number at hole position */
      A[holePosition] = valueToInsert
      
   end for
	
end procedure

Чтобы узнать о реализации сортировки вставками на языке программирования C, нажмите здесь .