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

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

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

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

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

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

Ввести с клавиатуры 7 вещественных чисел. Вывести их в порядке убывания - C++
Ввести с клавиатуры 7 вещественных чисел. Вывести их в порядке убывания (мет-ом пузырька). Помогите на С++ написать.

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания - C++
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а...

Вывести элементы массива с нечетными номерами в порядке убывания номеров - C++
Оформить в виде функции. Дан массив А размера N (N-нечетное число). Вывести его элементы с нечетными номерами в порядке убывания номеров:...

Вывести элементы массива с нечетными номерами в порядке убывания номеров - C++
помогите, пожалуйста!:help: Дано массив А размера n (n-нечетное число) вывести его элементы с нечетными номерами в порядке убывания...

Вывести элементы массива с четными номерами в порядке убывания номеров - C++
Элементы массивов задать с помощью генератора случайных чисел (блок присваивания, команда Random). Вывести сначала весь массив в обычном...

Вывести в порядке невозрастания (убывания) элементы массива, модуль которых больше 2 - C++
Собственно сама задачка : Дан одномерный массив из N случайных действительных чисел в диапазоне от -4 до 8 . Вы- вести в порядке...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
20.05.2012, 02:27 #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  [ТС] #3
А если я вектора еще не знаю. Как быть в этом случае?
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
20.05.2012, 02:59 #4
Да тут нет векторов) Если вообще без стандартной библиотеки, то надо написать сортировку (ну и вывод, естессно), вот про сортировки: Алгоритмы сортировок.

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

Вывести в порядке убывания три наибольших элемента массива. У меня выводит как хочешь - C++
В принципе вот: x1=mas;x2=mas;x3=mas; for(i=3; i&lt;n; i++) if(mas&gt;=x1 || mas&gt;=x2 || mas&gt;=x3) { ...

Расположить чётные числа массива в порядке возрастания, а нечётные в порядке убывания - C++
Требуется расположить чётные числа в порядке возрастания, а не чётные в порядке убывания. Относительного расположения чисел не менять. С...

Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания - C++
Привет. Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания. Вот тут я сделал массив...

Расположить элементы первой половины одномерного массива в порядке возрастания, а второй - в порядке убывания - C++
Нужно расположить элементы первой половины одномерного массива в порядке возрастания, а второй половины массива в порядке убывания. Данная...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.05.2012, 09:37
Ответ Создать тему
Опции темы

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