/
AirLexa
/
03
Обзор
Документация
Войти
/
AirLexa
/
03
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Lesson_03/Task_3/Task_3.cpp
65 строк
2 KB
AirLexa
создал Lesson_03/Task_3/Task_3.cpp
28 дек 2025, 15:49
28 дек 2025, 15:49
b998987
Код
Авторство
О чём код?
#include <iostream> #include <windows.h> void sort(int* arr, int size) { // ищем мах значение int max = 0; for (int i = 0; i < size; i++) if (arr[i] > max) max = arr[i]; // создаем массив длиной в мах + 1, потому что max это крайний индекс массива int* tmp = new int[++max](); // и заполняем его нулями // значение arr это индекс tmp, увеличиваем его for (int i = 0; i < size; i++) tmp[arr[i]]++; int n = 0; // обходим все значения tmp и записываем индексы в arr for (int i = 0; i < max; i++) while (tmp[i] > 0) { arr[n] = i; n++; tmp[i]--; }; delete[] tmp; } void print_arr(std::string str, int* arr, int size) { std::cout << str; for (int i = 0; i < size; i++) std::cout << " " << arr[i]; std::cout << std::endl; } void count_sort(int* arr, int size) { print_arr("Исходный массив:", arr, size); sort(arr, size); print_arr("Отсортированный массив:", arr, size); } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int size = 10; int* arr = new int[size] { 3, 43, 38, 29, 18, 72, 57, 61, 2, 33 }; count_sort(arr, size); delete[] arr; size = 15; arr = new int[size] { 88, 91, 87, 59, 53, 49, 29, 16, 4, 27, 28, 89, 2, 25, 74 }; count_sort(arr, size); delete[] arr; size = 18; arr = new int[size] { 24, 66, 20, 79, 30, 16, 19, 62, 94, 59, 0, 7, 59, 90, 84, 60, 95, 62 }; count_sort(arr, size); delete[] arr; return 0; }