Сортування вставками - студопедія
Сортування вставками (Insertion sort) - простий алгоритм сортування, при якій черговий елемент додається завжди в кінець списку, а потім переміщається в початок списку до тих пір, поки він менше попереднього елемента.
Таким чином, формально, знаходиться правильне місце для вставки (наприклад, сортування карток в бібліотеці). Цей алгоритм буде мати наступну послідовність кроків.
1. Крок ініціалізації. Масив з одного елемента є вже відсортованих по зростанню і виступає у вигляді початкового списку.
2. Крок ітерації. Для всіх наступних елементів з другого по n -1, черговий елемент i порівнюється з усіма попередніми елементами від 0 до (i -1), поки поточний елемент i менше або дорівнює попередньому. Після цього буде знайдена позиція для вставки або буде досягнуто початку списку. Після цього елемент вставляється в знайдену позицію.
Нехай дано наступний масив:
Аналіз обчислювальної складності показує, що в будь-якому випадку необхідно провести (n-1) прохід. У кожному з цих проходів в найкращому випадку, коли масив відсортований за зростанням, потрібно одне порівняння. В цьому випадку перестановок не буде, а обчислювальні витрати будуть
.
У найгіршому випадку, коли масив відсортований за спаданням, на кожен з (n -1) проходів потрібно i порівнянь з попередніми елементами. Обчислювальна складність пропорційна. В середньому, на кожному проході потрібно на половину менше. Отже, в середньому. Обчислювальна складність все одно пропорційна.
Блок-схема алгоритму сортування вставками має вигляд:
Реалізувати цей алгоритм на мові С ++ можна наступним чином:
void InsertSort (T * A, const int n)