Отсортировать первую половину массива по возрастанию, а вторую - по убыванию - C (СИ)
Формулировка задачи:
Массив из 20 целых чисел заполняется случайными числами от -100 до 100, отсортировать его первую половину по возрастанию, а вторую- по убыванию и вывести на экран.
Помогите пожалуйста.
Решение задачи: «Отсортировать первую половину массива по возрастанию, а вторую - по убыванию»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 20 //сортировка вставками void isort(int arr[], int first, int last, int (*cmp)(int,int)){ int v, i, j; for(i = first + 1; i < last; ++i){ v = arr[i]; j = i; while((j > first) && (*cmp)(v, arr[j - 1])){ arr[j] = arr[j - 1]; --j; } arr[j] = v; } } static int cmp_asc(int a, int b) { return (a < b); } static int cmp_desc(int a, int b) { return (a > b); } int main(void){ int i, arr[N]; srand((unsigned int)time(NULL)); for(i = 0; i < N; ++i) arr[i] = -100 + rand() % 201; //сортируем по возрастанию isort(arr, 0, N / 2, &cmp_asc); //сортируем по убыванию isort(arr, N / 2, N, &cmp_desc); for(i = 0; i < N; ++i) printf("%d ", arr[i]); getchar(); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с массивами и временем
- Определение размера массива N
- Функция isort для сортировки массива вставками
- Статические функции сравнения для сортировки по возрастанию и убыванию
- Инициализация массива случайными числами
- Сортировка первой половины массива по возрастанию
- Сортировка второй половины массива по убыванию
- Вывод отсортированного массива на экран
- Получение ввода от пользователя для завершения работы программы
- Возвращение 0 для успешного завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д