Сортировка вставками - C (СИ) (154552)
Формулировка задачи:
Мне нужно написать программу, в которой бы присутствовала сортировка вставками.
Желательно в одномерном массиве.
Помогите пожалуйста.
Решение задачи: «Сортировка вставками»
textual
Листинг программы
int n= ? //кодичество элементов
int A[n];
for(int i=2; i<n; i++)
{
int key=A[i];
int j=i-1;
while(j>=1 && A[j]>key)
{
A[j+1]=A[j];
j--;
A[j+1]=key
}
}
Объяснение кода листинга программы
- Задается переменная
n(количество элементов) - Создается массив
A[n] - Начинается цикл
forсо значениями от 2 доn-1 - Внутри цикла переменная
keyпринимает значениеA[i] - Переменная
jинициализируется значениемi-1 - В цикле
whileпроисходит сравнениеkeyс каждым элементом массиваA[j]от начала массива до элемента, большегоkey - Если элемент больше
key, то элементы массива сдвигаются вправо на одну позицию - Значение
jуменьшается на 1 - Когда
jстановится меньше или равным 1 и элемент массиваA[j]не большеkey, тоkeyвставляется в массив на позициюj+1 - Цикл
whileзавершается, когдаjстановится меньше 1 или находится элемент, меньшийkey - Цикл
forзавершается - Массив
Aотсортирован вставками