14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
1

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

23.07.2012, 20:13. Показов 33519. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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;
 }
Здесь выводится только максимальное значение, а как вывести остальные по убыванию?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 20:13
Ответы с готовыми решениями:

Нужно отсортировать правильно данные в ячейках от большего к меньшему по типу
нужен макрос для обработки столбца в таблице. Поставщик даёт состов товара. нужно отсортировтаь...

Нужно отсортировать двумерный массив от большего к меньшему (в примере логика работает с точностью до наоборот)
//- значение - id function SortArray(array) { for(var i=0;i&lt;array.length; i++){ ...

Отсортировать колонку Категория от большего к меньшему
имеется файлик, где расчитывется з/п рабочих. надо отсортировать колонку Категория (D). самая...

Отсортировать последовательность от большего к меньшему, и убрать все повторяющиеся числа
Задана последовательность действительных чисел {a}_{1}, {a}_{2},...{a}_{n}, n\leq 400. Сделать...

23
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.07.2012, 20:18 2
std::sort
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
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]);
я надеюсь, проблема только в реализации, а не в понимании алгоритма...
0
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]);
я надеюсь, проблема только в реализации, а не в понимании алгоритма...
Я не совсем Вас понял. Посмотрите мой код. Я задаю сначала кол-во элементов, затем также вручную задаю значения элементов массива разные числа и в итоге он должен выдать отсортированные значения.
А Ваш куда и как подставить? Не судите строго я только только учусь.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 20:46 5
Ну почему многие так любят пузырек. Тогда хотя бы уж оптимизированный пузырек или сортировку Шелла, но не этот медленный пузырек...
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
23.07.2012, 20:48 6
Вы уверены, что его кто-то любит...? автор темы, насколько я понял, делает первые шаги... Вы разве не с пузырька начинали?)
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 20:50 7
Неа, я литературу не читал, когда интересовался, первое, что пришло в голову тогда это метод прямого выбора
0
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
23.07.2012, 20:52  [ТС] 8
Цитата Сообщение от Avazart Посмотреть сообщение
я не знаю что такое std::sort
без него можно обойтись и решить?
0
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
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();
}
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.07.2012, 20:58 10
Тут я когда-то писал сортировки по Шилду
Вложения
Тип файла: rar Пузырьковая сортировка.rar (3.6 Кб, 69 просмотров)
0
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();
}
Доктор, Вы надо мной издеваетесь)). Что за длинный код, я ничего в нём не понимаю.
Лучше поменяйте мой код так чтобы сортировал правильно))
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:07 12
Parilo, чтобы отсортировать массив за пару проходов (как у вас), массив должен быть специализированный, поэтому сортировка в общем случае имеет сложность https://www.cyberforum.ru/cgi-bin/latex.cgi?O(n\ln{n}), то есть на простоту не расчитывайте.
0
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;
 }
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
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;
  }
}
//---------------------------------------------------------------------------
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:16 15
Avazart, все хорошо, но думаю, что Вы прекрасно понимаете, что стоит ввести логическую переменную и при сортировке опираться на наличие транспозиций, то Ваш алгоритм сильно выиграет в ряде случаев.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.07.2012, 21:23 16
Не мой пример а Шилда, он описывает начиная от cамописного свопа и пузрьковой сортировки до улучшенной быстрой.
Это к тому что книжки читать полезно, если хочишь понять, если нет юзай сразу std::sort

Про логическую переменную не понял...
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:25 17
Цитата Сообщение от Avazart Посмотреть сообщение
книжки читать полезно

Не по теме:

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



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

Не по теме:

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

0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36587 / 20317 / 4218
Регистрация: 12.02.2012
Сообщений: 33,614
Записей в блоге: 13
23.07.2012, 21:29 18
Цитата Сообщение от Thinker Посмотреть сообщение
Ну почему многие так любят пузырек
- да за простоту реализации. Я больше люблю обменную сортировку (хотя лучше бы привыкнуть к сортировке вставкам - устойчивый и естественный алгоритм). Более быстрые алгоритмы сложнее в реализации. На массиве в 200 эл-тов у быстрой сортировки преимущество не ощущается.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:32 19
Catstail, Вы правы, но есть оптимизированный алгоритм сортировки пузырьком, работающий с инверсиями. Для маленьких массивов почти не важно какой алгоритм (но и тут свои ньюансы, лучше без рекурсии), но в современном мире огромные объемы информации надо обрабатывать уметь.
0
Jupiter
23.07.2012, 21:34     Нужно отсортировать значения элементов в массиве от большего к меньшему
  #20
 Комментарий модератора 
Прекращаем оффтоп!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2012, 21:34

Вывести k максимальных элементов массива от большего к меньшему
Ввод из: Стандартный ввод Время выполнения на одном тесте: 1 с Вывод в: Стандартный...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru