Сортировка массива по убыванию методом вставки - C (СИ)
Формулировка задачи:
Определить массив из 50 вещественных чисел: x[i] = 10*Cos( i/10), i= 1, 2, . . . 50. Отсортировать массив по убыванию значений элементов. Вывести массивы до и после сортировки
Решение задачи: «Сортировка массива по убыванию методом вставки»
textual
Листинг программы
#include<stdio.h>
#include<math.h>
#define N 50
void print(double ar[],int n);
void sort(double ar[],int n);
int main(void)
{
double x[N];
int i;
for(i=0;i<N;i++)
x[i]=10*cos((i+1)/10.0);
printf("array before sort\n");
print(x,N);
printf("\narray after sort\n");
sort(x,N);
print(x,N);
return 0;
}
void print(double ar[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%1.1lf ",ar[i]);
printf("\n");
}
void sort(double ar[],int n)
{
int i,j;
double t;
for(i=1;i<n;i++)
{
j=i-1; t=ar[i];
while(j>=0 && ar[j]<t)
{
ar[j+1]=ar[j];
j--;
}
ar[j+1]=t;
}
}
Объяснение кода листинга программы
Код представлен на языке C и реализует алгоритм сортировки массива методом вставки.
- В функции
mainсоздается массивxтипаdoubleс 50 элементами. - Затем, с помощью цикла
for, каждый элемент массиваxинициализируется значением 10*косинус((i+1)/10.0). - Далее, с помощью функции
printмассив выводится на экран в исходном порядке. - После этого, вызывается функция
sort, которая принимает массивxи его размер в качестве аргументов. - В функции
sortиспользуется циклfor, который начинается со второго элемента массива (i=1) и продолжается до n-1 итераций, где n - размер массива. - Внутри цикла, переменная
jинициализируется значением i-1, а переменнаяt- значением текущего элемента массива (ar[i]). - Затем, в цикле
whileпроисходит сравнение текущего элемента массиваtс каждым предыдущим элементом массиваar[j]. Если предыдущий элемент меньшеt, то элементы меняются местами с помощью циклаwhile. - После завершения внутреннего цикла
while, элементtвставляется в отсортированную часть массива. - После завершения внешнего цикла
forв функцииsort, отсортированный массив выводится на экран с помощью функцииprint. - В функции
mainвозвращается 0, что означает успешное выполнение программы.