Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
S.k.y
22 / 22 / 2
Регистрация: 03.08.2011
Сообщений: 158
#1

Вывести k максимальных чисел массива в порядке убывания - C++

20.05.2012, 02:08. Просмотров 779. Ответов 4
Метки нет (Все метки)

Задан массив из n чисел. Нужно вывести k максимальных чисел этого массива в порядке убывания.
Подскажите, как сделать сортировку элементов массива от большего к меньшему, что бы потом вывести k первых(максимальных) элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2012, 02:08     Вывести k максимальных чисел массива в порядке убывания
Посмотрите здесь:
Ввести с клавиатуры 7 вещественных чисел. Вывести их в порядке убывания C++
Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания C++
C++ Вывести элементы массива с четными номерами в порядке убывания номеров
C++ Вывести элементы массива с нечетными номерами в порядке убывания номеров
Вывести элементы массива с нечетными номерами в порядке убывания номеров C++
C++ Вывести в порядке невозрастания (убывания) элементы массива, модуль которых больше 2
C++ Вывести в порядке убывания три наибольших элемента массива. У меня выводит как хочешь
C++ Расположить чётные числа массива в порядке возрастания, а нечётные в порядке убывания
Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания C++
Расположить элементы первой половины одномерного массива в порядке возрастания, а второй - в порядке убывания C++
C++ Вывести слова в порядке убывания их длин

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
20.05.2012, 02:27     Вывести k максимальных чисел массива в порядке убывания #2
Цитата Сообщение от S.k.y Посмотреть сообщение
как сделать сортировку элементов массива от большего к меньшему
std::sort + std::greater (из <algorithm>):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <iterator>
 
 
int main() {
   int vector[] = {1, 2, -1, -8, 7, 6, 55, 44, -3, -2, -222};
   std::size_t const n = sizeof(vector) / sizeof(*vector);
   std::size_t const k = 4;
   
   std::sort(&vector[0], &vector[0] + n, std::greater<int>());
   std::copy(&vector[0], &vector[0] + k, std::ostream_iterator<int>(std::cout, " "));
}
http://liveworkspace.org/code/773d59...ba9228de417b67

Добавлено через 7 минут
Вообще весь массив сортировать ни к чему, достаточно получить первые k элементов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <algorithm>
#include <iterator>
 
 
int main() {
   int vector[] = {1, 2, -1, -8, 7, 6, 55, 44, -3, -2, -222};
   std::size_t const n = sizeof(vector) / sizeof(*vector);
   std::size_t const k = 4;
   
   std::partial_sort(&vector[0], &vector[0] + k, &vector[0] + n, std::greater<int>());
   std::copy(&vector[0], &vector[0] + k, std::ostream_iterator<int>(std::cout, " "));
}
http://liveworkspace.org/code/2cf9dc...b38d072c0151dc
S.k.y
22 / 22 / 2
Регистрация: 03.08.2011
Сообщений: 158
20.05.2012, 02:51  [ТС]     Вывести k максимальных чисел массива в порядке убывания #3
А если я вектора еще не знаю. Как быть в этом случае?
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
20.05.2012, 02:59     Вывести k максимальных чисел массива в порядке убывания #4
Да тут нет векторов) Если вообще без стандартной библиотеки, то надо написать сортировку (ну и вывод, естессно), вот про сортировки: Алгоритмы сортировок.

Добавлено через 2 минуты
Быстрый вариант: копируешь оттуда код "пузырьковая сортировка на С", меняешь знак в условии if на противоположный (если надо), вызываешь её.
S.k.y
22 / 22 / 2
Регистрация: 03.08.2011
Сообщений: 158
20.05.2012, 09:37  [ТС]     Вывести k максимальных чисел массива в порядке убывания #5
Спасибо огромное. Вопрос исчерпан!
Yandex
Объявления
20.05.2012, 09:37     Вывести k максимальных чисел массива в порядке убывания
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru