Отсортировать массив по убыванию значений элементов - C (СИ)
Формулировка задачи:
Определить массив из 50 вещественных чисел: x[i] = 10*Cos( i/10), i= 1, 2, . . . 50. Отсортировать массив по убыванию значений элементов. Вывести массивы до и после сортировки.
Решение задачи: «Отсортировать массив по убыванию значений элементов»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define N 51
void swap(float& f1, float& f2)
{
float temp = f1; f1 = f2; f2 = temp;
}
int main(int argc, char** argv)
{
float arr[N] = { 0 };
for (int i = 0; i < N; i++)
{
arr[i] = 10 * cos(i / 10);
printf("%4.2f ", arr[i]);
}
printf("\n\n");
for (int i = 0; i < N; i++)
{
int max_i = i;
for (int j = i + 1; j < N; j++)
max_i = (arr[j] > arr[max_i]) ? j : max_i;
swap(arr[i], arr[max_i]);
}
for (int i = 0; i < N; i++)
printf("%4.2f ", arr[i]);
printf("\n");
_getch();
return 0;
}
Объяснение кода листинга программы
Код представлен на языке C и решает задачу сортировки массива по убыванию значений элементов.
- Первые три строки определяют используемые библиотеки, стандартные входы и выходы, а также константу N, определяющую размер массива.
- Следующая строка определяет функцию swap, которая меняет местами два числа с помощью временной переменной.
- Строки с 11 по 26 формируют массив arr и выводят его значения на экран.
- Строка 27 добавляет двойной пробел в начало следующего вывода.
- Строки с 28 по 41 реализуют алгоритм сортировки пузырьком, начиная с текущего элемента и двигаясь вправо до тех пор, пока не будет найден элемент, меньший текущего. Затем происходит обмен текущего элемента с этим меньшим элементом.
- Строки с 42 по 57 выводят отсортированный массив на экран.
- Строка 58 ожидает нажатия клавиши для завершения работы программы.
- Строка 59 возвращает 0, обозначая успешное завершение работы программы.