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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.71
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
#1

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

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

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++):

В одномерном массиве, вычислить произведение положительных элементов, сумму элементов, расположенных до минимального, а также отсортировать массив. - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) произведение положительных элементов массива; 2) сумму...

Найти сумму максимального значения элементов с четными индексами и минимального значения элементов с нечетными индексами в одномерном массиве - C++
дан одномерный массив А.найти мах(a2,a4..)+мин(a1,a3) int main() { int y; cin&gt;&gt;N; for(int i=0; i&lt;N; i++) cin&gt;&gt;y; max=y;...

В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. - C++
1. В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. Число N и...

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

В заданном массиве из n элементов отсортировать по возрастанию его часть - C++
Здравствуйте! В заданном массиве из n элементов отсортировать по возрастанию его часть, находящуюся между двумя введенными номерами....

В заданном массиве из n элементов отсортировать по возрастанию его часть - C++
Помогите,пожалуйста,решить! В заданном массиве из n элементов отсортировать по возрастанию его часть, находящуюся между двумя введенными...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,584
Записей в блоге: 17
23.07.2012, 20:18 #2
std::sort
salam
162 / 143 / 12
Регистрация: 10.07.2012
Сообщений: 727
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++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 20:46 #5
Ну почему многие так любят пузырек. Тогда хотя бы уж оптимизированный пузырек или сортировку Шелла, но не этот медленный пузырек...
salam
162 / 143 / 12
Регистрация: 10.07.2012
Сообщений: 727
23.07.2012, 20:48 #6
Вы уверены, что его кто-то любит...? автор темы, насколько я понял, делает первые шаги... Вы разве не с пузырька начинали?)
Thinker
Эксперт C++
4225 / 2199 / 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_
234 / 234 / 71
Регистрация: 03.02.2011
Сообщений: 1,431
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
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,584
Записей в блоге: 17
23.07.2012, 20:58 #10
Тут я когда-то писал сортировки по Шилду
Вложения
Тип файла: rar Пузырьковая сортировка.rar (3.6 Кб, 52 просмотров)
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++
4225 / 2199 / 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
Эксперт С++
7152 / 5329 / 278
Регистрация: 10.12.2010
Сообщений: 23,584
Записей в блоге: 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++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:16 #15
Avazart, все хорошо, но думаю, что Вы прекрасно понимаете, что стоит ввести логическую переменную и при сортировке опираться на наличие транспозиций, то Ваш алгоритм сильно выиграет в ряде случаев.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2012, 21:16
Привет! Вот еще темы с ответами:

В массиве не находит повторные значения, нужно исправить - C++
include &lt;iostream&gt; #include &lt;cctype&gt; int main() { int massive; int *p=massive; int i=0,z=0; std::cout &lt;&lt;&quot;Vvedite zna4enie...

Помогите нужно вывести только определеные значения в массиве - C++
Спасибо уже только за то что проявили интерес и посмотрели тему ^^ (Пишу программу для решения матиматической модели . С толкнулся с...

Нахождение большего числа в массиве - C++
Доброго время суток друзья. Помогите, исправьте что надо. Задание такое: Дан массив F: array , определить количество&quot;особых&quot; элементов в...

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


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

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

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