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

Нужно отсортировать значения элементов в массиве от большего к меньшему - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.71
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
23.07.2012, 20:13     Нужно отсортировать значения элементов в массиве от большего к меньшему #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int main ()
{
 int a[100], b;
 cin >>b;
 for (int i=0;i<=b;i++)
 cin >> a[i];
 
    int sort=a[0];
    for (i=1;i<=b;i++)
        if (a[i]>sort) sort=a[i];
     cout << sort;
 return 0;
 }
Здесь выводится только максимальное значение, а как вывести остальные по убыванию?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2012, 20:13     Нужно отсортировать значения элементов в массиве от большего к меньшему
Посмотрите здесь:

C++ В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов.
Найти сумму максимального значения элементов с четными индексами и минимального значения элементов с нечетными индексами в одномерном массиве C++
В заданном массиве из n элементов отсортировать по возрастанию его часть C++
Помогите нужно вывести только определеные значения в массиве C++
C++ В заданном массиве из n элементов отсортировать по возрастанию его часть
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
23.07.2012, 20:18     Нужно отсортировать значения элементов в массиве от большего к меньшему #2
std::sort
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
23.07.2012, 20:24     Нужно отсортировать значения элементов в массиве от большего к меньшему #3
этот код никогда Вам ничего полезного не сообщит...
еще раз продумайте алгоритм сортировки...

Добавлено через 2 минуты
C++
1
2
3
4
for(int i=0; i < size; i++)
for(int j=i+1; j < size; j++)
if(Array[i] > Array[j])
swap(Array[i], Array[j]);
я надеюсь, проблема только в реализации, а не в понимании алгоритма...
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
23.07.2012, 20:44  [ТС]     Нужно отсортировать значения элементов в массиве от большего к меньшему #4
Цитата Сообщение от salam Посмотреть сообщение
этот код никогда Вам ничего полезного не сообщит...
еще раз продумайте алгоритм сортировки...

Добавлено через 2 минуты
C++
1
2
3
4
for(int i=0; i < size; i++)
for(int j=i+1; j < size; j++)
if(Array[i] > Array[j])
swap(Array[i], Array[j]);
я надеюсь, проблема только в реализации, а не в понимании алгоритма...
Я не совсем Вас понял. Посмотрите мой код. Я задаю сначала кол-во элементов, затем также вручную задаю значения элементов массива разные числа и в итоге он должен выдать отсортированные значения.
А Ваш куда и как подставить? Не судите строго я только только учусь.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 20:46     Нужно отсортировать значения элементов в массиве от большего к меньшему #5
Ну почему многие так любят пузырек. Тогда хотя бы уж оптимизированный пузырек или сортировку Шелла, но не этот медленный пузырек...
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
23.07.2012, 20:48     Нужно отсортировать значения элементов в массиве от большего к меньшему #6
Вы уверены, что его кто-то любит...? автор темы, насколько я понял, делает первые шаги... Вы разве не с пузырька начинали?)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 20:50     Нужно отсортировать значения элементов в массиве от большего к меньшему #7
Неа, я литературу не читал, когда интересовался, первое, что пришло в голову тогда это метод прямого выбора
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
23.07.2012, 20:52  [ТС]     Нужно отсортировать значения элементов в массиве от большего к меньшему #8
Цитата Сообщение от Avazart Посмотреть сообщение
я не знаю что такое std::sort
без него можно обойтись и решить?
Doctor_
 Аватар для Doctor_
232 / 232 / 69
Регистрация: 03.02.2011
Сообщений: 1,405
23.07.2012, 20:56     Нужно отсортировать значения элементов в массиве от большего к меньшему #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#define N 20
 
using namespace std;
 
int main() {
    srand(time(NULL));
    setlocale(LC_ALL,"Russian");
    int vector[N], temp = 0;
    for(int i=0; i<N; i++)
    vector[i] = rand()%50;
    for(int i=0; i<N; i++)
    cout << vector[i] << " ";
    cout << endl;
    cout << "ГЏГ® óáûâГ*Г*ГЁГѕ:" << endl;
    for(int i=0; i<N-1; i++) {
            for(int j=0; j<N-1; j++) {
                    if(vector[j+1] > vector[j]) {
                                   temp = vector[j+1];
                                   vector[j+1] = vector[j];
                                   vector[j] = temp;
                                   }
                    }
            }
    for(int i=0; i<N; i++)
    cout << vector[i] << " ";
    getche();
}
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
23.07.2012, 20:58     Нужно отсортировать значения элементов в массиве от большего к меньшему #10
Тут я когда-то писал сортировки по Шилду
Вложения
Тип файла: rar Пузырьковая сортировка.rar (3.6 Кб, 47 просмотров)
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
23.07.2012, 21:03  [ТС]     Нужно отсортировать значения элементов в массиве от большего к меньшему #11
Цитата Сообщение от Doctor_ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#define N 20
 
using namespace std;
 
int main() {
    srand(time(NULL));
    setlocale(LC_ALL,"Russian");
    int vector[N], temp = 0;
    for(int i=0; i<N; i++)
    vector[i] = rand()%50;
    for(int i=0; i<N; i++)
    cout << vector[i] << " ";
    cout << endl;
    cout << "ГЏГ® óáûâГ*Г*ГЁГѕ:" << endl;
    for(int i=0; i<N-1; i++) {
            for(int j=0; j<N-1; j++) {
                    if(vector[j+1] > vector[j]) {
                                   temp = vector[j+1];
                                   vector[j+1] = vector[j];
                                   vector[j] = temp;
                                   }
                    }
            }
    for(int i=0; i<N; i++)
    cout << vector[i] << " ";
    getche();
}
Доктор, Вы надо мной издеваетесь)). Что за длинный код, я ничего в нём не понимаю.
Лучше поменяйте мой код так чтобы сортировал правильно))
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:07     Нужно отсортировать значения элементов в массиве от большего к меньшему #12
Parilo, чтобы отсортировать массив за пару проходов (как у вас), массив должен быть специализированный, поэтому сортировка в общем случае имеет сложность http://www.cyberforum.ru/cgi-bin/latex.cgi?O(n\ln{n}), то есть на простоту не расчитывайте.
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
23.07.2012, 21:07  [ТС]     Нужно отсортировать значения элементов в массиве от большего к меньшему #13
Хорошо скажу так.
Измените с 8 строки по 12 строку так, чтобы программа выдавала отсортированный вариант. до 8 строки ничего не трогайте.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int main ()
{
 int a[100], b;
 cin >>b;
 for (int i=0;i<=b;i++)
 cin >> a[i];
 
    int sort=a[0];
    for (i=1;i<=b;i++)
        if (a[i]>sort) sort=a[i];
     cout << sort;
 return 0;
 }
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
23.07.2012, 21:12     Нужно отсортировать значения элементов в массиве от большего к меньшему #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template <class T>
inline void bubble_sort(T array[], int size)
{
// Верхний предел внешнего цикла равен size-l, а не
// size, так как если все прочие элементы заняли свои места,
// наибольший автоматически оказывается в правильной позиции.
for (int i=0; i < size-1; ++i)
  {
   for (int j=size-1; j > i;--j )
    {
     if (array[j-1] >array[j])
       {
       swap(array, j-1, j);
       }
     cout<<i<<" "<<j <<"   ";
     print(array, size);
    }
  cout<<endl;
  }
}
//---------------------------------------------------------------------------
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:16     Нужно отсортировать значения элементов в массиве от большего к меньшему #15
Avazart, все хорошо, но думаю, что Вы прекрасно понимаете, что стоит ввести логическую переменную и при сортировке опираться на наличие транспозиций, то Ваш алгоритм сильно выиграет в ряде случаев.
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
23.07.2012, 21:23     Нужно отсортировать значения элементов в массиве от большего к меньшему #16
Не мой пример а Шилда, он описывает начиная от cамописного свопа и пузрьковой сортировки до улучшенной быстрой.
Это к тому что книжки читать полезно, если хочишь понять, если нет юзай сразу std::sort

Про логическую переменную не понял...
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:25     Нужно отсортировать значения элементов в массиве от большего к меньшему #17
Цитата Сообщение от Avazart Посмотреть сообщение
книжки читать полезно

Не по теме:

Кто же спорит. Поэтому, чтобы показать, что умеете писать красиво, надо показывать хорошие алгоритмы.



Цитата Сообщение от Avazart Посмотреть сообщение
Про логическую переменную не понял...

Не по теме:

Лень писать простые вещи, например, тут есть
http://www.delphi-manual.ru/booblesort.php

Catstail
Модератор
 Аватар для Catstail
21500 / 10253 / 1669
Регистрация: 12.02.2012
Сообщений: 17,139
23.07.2012, 21:29     Нужно отсортировать значения элементов в массиве от большего к меньшему #18
Цитата Сообщение от Thinker Посмотреть сообщение
Ну почему многие так любят пузырек
- да за простоту реализации. Я больше люблю обменную сортировку (хотя лучше бы привыкнуть к сортировке вставкам - устойчивый и естественный алгоритм). Более быстрые алгоритмы сложнее в реализации. На массиве в 200 эл-тов у быстрой сортировки преимущество не ощущается.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:32     Нужно отсортировать значения элементов в массиве от большего к меньшему #19
Catstail, Вы правы, но есть оптимизированный алгоритм сортировки пузырьком, работающий с инверсиями. Для маленьких массивов почти не важно какой алгоритм (но и тут свои ньюансы, лучше без рекурсии), но в современном мире огромные объемы информации надо обрабатывать уметь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2012, 21:34     Нужно отсортировать значения элементов в массиве от большего к меньшему
Еще ссылки по теме:

C++ В одномерном массиве значение каждого элемента заменить разностью этого значения и среднего арифметического значения других элементов
C++ В одномерном массиве, вычислить произведение положительных элементов, сумму элементов, расположенных до минимального, а также отсортировать массив.

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

Или воспользуйтесь поиском по форуму:
Jupiter
23.07.2012, 21:34     Нужно отсортировать значения элементов в массиве от большего к меньшему
  #20
 Комментарий модератора 
Прекращаем оффтоп!
Yandex
Объявления
23.07.2012, 21:34     Нужно отсортировать значения элементов в массиве от большего к меньшему
Ответ Создать тему
Опции темы

Текущее время: 04:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru