C++. Воплотить программку, которая воспринимает на вход количество частей массива, выполняет
C++. Реализовать программу, которая воспринимает на вход количество частей массива, исполняет генерацию 3 массивов отсортированных по возрастанию, по убыванию и случайным образом соответственно. Сортирует каждый из массивов используя сортировку "выбором". После выполнения выводит данные отчета по выполнению сортировки в формате: как отсортирован массив, время, занявшее на сортировку каждым из способов.
Задать свой вопрос
Геннадий
Исправлено
1 ответ
Владислав Жармагамбетов
Не очень понятно, что значит "время, занявшее на сортировку каждым из способов" - способ в задании всего 1.
Программке нужно сказать количество частей в массиве, после этого она выведет нужную информацию. Если нужен вывод самих массивов, раскомментируйте подходящие строчки.
include lt;iostreamgt;
include lt;ctimegt;
include lt;cstdlibgt;
include lt;locale.hgt;
void selection_sort(int *arr, int n, std::string name)
/*std::cout lt;lt; "Неотсортированный массив " lt;lt; name lt;lt; std::endl;
for (int i = 0; i lt; n; i++)
std::cout lt;lt; arr[i] lt;lt; " ";
std::cout lt;lt; std::endl;*/
std::clock_t c_start = std::clock();
for (int i = 0; i lt; n - 1; i++)
int ind_min = i;
for (int j = i + 1; j lt; n; j++)
if (arr[j] lt; arr[ind_min]) ind_min = j;
if (ind_min != i)
int t = arr[ind_min];
arr[ind_min] = arr[i];
arr[i] = t;
std::clock_t c_end = std::clock();
std::cout lt;lt; "Отсортированный массив " lt;lt; name lt;lt; " (сортировка выбором)"lt;lt; std::endl;
/*for (int i = 0; i lt; n; i++)
std::cout lt;lt; arr[i] lt;lt; " ";
std::cout lt;lt; std::endl;*/
float time = 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC;
std::cout lt;lt; "Медли затрачено: " lt;lt; time lt;lt; " мс" lt;lt; std::endl;
int main()
setlocale(LC_ALL, "rus");
int n;
std::cout lt;lt; "Число элементов массива: ";
std::cin gt;gt; n;
int *arr = new int[n];
arr[0] = 0;
for (int i = 1; i lt; n; i++)
arr[i] = arr[i-1] + rand() % 3;
selection_sort(arr, n, "[Отсортирован по возрастанию]");
arr[0] = 10000;
for (int i = 1; i lt; n; i++)
arr[i] = arr[i-1] - rand() % 3;
selection_sort(arr, n, "[Отсортирован по убыванию]");
for (int i = 0; i lt; n; i++)
arr[i] = rand() % 10000;
selection_sort(arr, n, "[Случайный массив]");
return 0;
Пример работы:
Число частей массива: 30000
Отсортированный массив [Отсортирован по возрастанию] (сортировка выбором)
Медли затрачено: 1760 мс
Отсортированный массив [Отсортирован по убыванию] (сортировка выбором)
Медли затрачено: 2838 мс
Отсортированный массив [Случайный массив] (сортировка выбором)
Времени затрачено: 1789 мс
Программке нужно сказать количество частей в массиве, после этого она выведет нужную информацию. Если нужен вывод самих массивов, раскомментируйте подходящие строчки.
include lt;iostreamgt;
include lt;ctimegt;
include lt;cstdlibgt;
include lt;locale.hgt;
void selection_sort(int *arr, int n, std::string name)
/*std::cout lt;lt; "Неотсортированный массив " lt;lt; name lt;lt; std::endl;
for (int i = 0; i lt; n; i++)
std::cout lt;lt; arr[i] lt;lt; " ";
std::cout lt;lt; std::endl;*/
std::clock_t c_start = std::clock();
for (int i = 0; i lt; n - 1; i++)
int ind_min = i;
for (int j = i + 1; j lt; n; j++)
if (arr[j] lt; arr[ind_min]) ind_min = j;
if (ind_min != i)
int t = arr[ind_min];
arr[ind_min] = arr[i];
arr[i] = t;
std::clock_t c_end = std::clock();
std::cout lt;lt; "Отсортированный массив " lt;lt; name lt;lt; " (сортировка выбором)"lt;lt; std::endl;
/*for (int i = 0; i lt; n; i++)
std::cout lt;lt; arr[i] lt;lt; " ";
std::cout lt;lt; std::endl;*/
float time = 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC;
std::cout lt;lt; "Медли затрачено: " lt;lt; time lt;lt; " мс" lt;lt; std::endl;
int main()
setlocale(LC_ALL, "rus");
int n;
std::cout lt;lt; "Число элементов массива: ";
std::cin gt;gt; n;
int *arr = new int[n];
arr[0] = 0;
for (int i = 1; i lt; n; i++)
arr[i] = arr[i-1] + rand() % 3;
selection_sort(arr, n, "[Отсортирован по возрастанию]");
arr[0] = 10000;
for (int i = 1; i lt; n; i++)
arr[i] = arr[i-1] - rand() % 3;
selection_sort(arr, n, "[Отсортирован по убыванию]");
for (int i = 0; i lt; n; i++)
arr[i] = rand() % 10000;
selection_sort(arr, n, "[Случайный массив]");
return 0;
Пример работы:
Число частей массива: 30000
Отсортированный массив [Отсортирован по возрастанию] (сортировка выбором)
Медли затрачено: 1760 мс
Отсортированный массив [Отсортирован по убыванию] (сортировка выбором)
Медли затрачено: 2838 мс
Отсортированный массив [Случайный массив] (сортировка выбором)
Времени затрачено: 1789 мс
Alla Gamylova
Программка выводит: Затрачено 0 мс
Korieva Arina
И так при любом количестве частей в массиве
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
задание экономиоти
Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких
Экономика.
Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности
Экономика.
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо
Русский язык.
Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.
Разные вопросы.
Сочинение на тему "Русский язык не сможет умереть!"
Математика.
Приветствую!
Меня зовут Станислав, я представляю компанию under.site.
Хотел бы предложить интересное решение
Разные вопросы.
Масса трёх одинаковых пакетов чая 180г чему равна масса
Математика.
Газообразный аммиак объёмом 2.24 л (н.у.) был полностью поглощён 14.68 мл
Химия.
Упражнение 2 Выпишите глаголы и вставьте пропущенные буквы
Русский язык.
Радиус окружности, описанной около равностороннего треугольника, равен 6. Найдите сторону треугольника
Геометрия.
Облако тегов