Сортировка вставками - C (СИ) (76722)
Формулировка задачи:
Отсортировать элементы методом вставками, и найти максимальное.
Например задается массив чисел и нужно найти максимальное (сортировка вставками).
Решение задачи: «Сортировка вставками»
textual
Листинг программы
void insertsort (double *a, int n)
{
double x; int i, j;
for (i=0; i < n; i++)
{
x = a[i];
for (j=i-1; j>=0 && a[j]>x; j--) a[j+1] = a[j];
a[j+1] = x;
}
}
Объяснение кода листинга программы
- В функции
insertsortесть два аргумента:double *aиint n. double *a- это указатель на массив изnчисел типаdouble.int n- это количество элементов в массивеa.- Внутри функции объявлены следующие переменные:
double x- временная переменная для хранения текущего элемента массиваa.int iиj- индексы текущего и предыдущего элементов массиваa.
- Внешний цикл
forпроходит по всем элементам массиваaот начала до конца. - Внутренний цикл
forзанимается поиском подходящего места для вставки текущего элементаxв уже отсортированную часть массива. - Если текущий элемент
xменьше или равен предыдущему элементу, то внутренний цикл завершается иxвставляется между предыдущим и текущим элементами. - Если текущий элемент
xбольше предыдущего элемента, то внутренний цикл продолжается иxвставляется после предыдущего элемента. - После завершения внутреннего цикла, текущий элемент
xвставляется в массивaна позициюi. - После завершения внешнего цикла, массив
aбудет отсортирован по возрастанию.