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

В одномерном массиве произвести сортировку элементов по убыванию - C++

Восстановить пароль Регистрация
 
MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 15:08     В одномерном массиве произвести сортировку элементов по убыванию #1
В одномерном массиве произвести сортировку элементов по убыванию, используя один из алгоритмов быстрой сортировки.

Необходимо сделать с входным файлом. Во входном файле:
В первой строке количество элементов, а во второй строке сами элементы.

Heeelp люди, я на экзамене. Не напишу экзамен, вылечу к чертям
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 15:08     В одномерном массиве произвести сортировку элементов по убыванию
Посмотрите здесь:

в одномерном массиве произвести сортировку элементов по убыванию C++
C++ Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве.
C++ Произвести вычисления в одномерном массиве
Вычислить произведение элементов массива и произвести сортировку массива C++
C++ В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wardenclyffe
 Аватар для wardenclyffe
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 9
28.06.2014, 15:24     В одномерном массиве произвести сортировку элементов по убыванию #2
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
#include <fstream>
#include <algorithm>
#include <vector>
 
bool sfunc(int a, int b)
{
    return a > b;
}
 
int main()
{
    std::ifstream in("input.txt");
    int number;
    in >> number;
    std::vector<int> data;
    int temp;
    while (!in.eof())
    {
        in >> temp;
        data.push_back(temp);
    }
    std::sort(data.begin(), data.end(), sfunc);
    in.close();
    return 0;
}
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,748
Записей в блоге: 15
28.06.2014, 15:27     В одномерном массиве произвести сортировку элементов по убыванию #3
Гугл -> запрос "ввод массива из файла" -> профит.
Это ввод массива целых чисел из файла.
То же самое насчёт сортировки массивов.
MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 15:27  [ТС]     В одномерном массиве произвести сортировку элементов по убыванию #4
Он не сортирует массив, который записан в файле.
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
28.06.2014, 15:27     В одномерном массиве произвести сортировку элементов по убыванию #5
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <fstream>
using namespace std;
void qSort(int* arr,int left, int right)
{
    int x=arr[(left+right)/2];
    int i=left,j=right;
    while(i <= j)
    {
        while(arr[i]>x)
        {
            i++;
        }
        while(arr[j]<x)
        {
            j--;
        }
        if(i<=j)
        {
            swap(arr[i], arr[j]);
            i++;
            j--;
        }
    }
    if (i<right)
    {
        qSort(arr,i, right);
    }
    if (left<j)    
    {
        qSort(arr,left, j);    
    }
}
int main()
{
    ifstream fin("in.txt");
    int n;
    int arr[100];
    fin >> n;
    for(int i = 0; i < n; i++)
    {
        fin>>arr[i];
    }
    qSort(arr,0, n-1);
    for(int i = 0; i < n; i++)
    {
        cout<<arr[i]<<" ";
    }        
    return 0;
}
MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 15:35  [ТС]     В одномерном массиве произвести сортировку элементов по убыванию #6
Baton.

Можно прокомментировать строчки кода?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,839
Записей в блоге: 2
Завершенные тесты: 1
28.06.2014, 15:51     В одномерном массиве произвести сортировку элементов по убыванию #7
Цитата Сообщение от wardenclyffe Посмотреть сообщение
bool sfunc(int a, int b)
std::greater
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
28.06.2014, 16:02     В одномерном массиве произвести сортировку элементов по убыванию #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
void qSort(int* arr,int left, int right)
{
    int x=arr[(left+right)/2]; //выбираем опорный элемент
    int i=left,j=right;  //с помощью этих индексов мы разделим массив на 3 части
    while(i <= j)
    {
        while(arr[i]>x) //в левой части должны быть элементы большие чем опорный, поэтому ищем элемент меньше чем опорный
        {
            i++;
        }
        while(arr[j]<x)//в правой части должны быть элементы меньшие чем опорный, поэтмоу ищем элемент больше чем опорный
        {
            j--;
        }
        if(i<=j)//если элемент не в своей части
        {
            swap(arr[i], arr[j]);
            i++;
            j--;
        }
    }
    if (i<right) //сортируем правую часть, если она нуждается в сортировке
    {
        qSort(arr,i, right);
    }
    if (left<j)   //сортируем левую часть
    {
        qSort(arr,left, j);    
    }
}
MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 16:07  [ТС]     В одномерном массиве произвести сортировку элементов по убыванию #9
int i=left,j=right; //с помощью этих индексов мы разделим массив на 3 части

На 3 части? Не 4 разве?

swap(arr[i], arr[j]); - если элемент не в своей части, то меняем части массива местами?
i++;
j--;

И увеличиваем i и уменьшаем j на единицу?
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,748
Записей в блоге: 15
28.06.2014, 16:11     В одномерном массиве произвести сортировку элементов по убыванию #10
Кстати, если количество чисел в файле не совпадает с количеством элементов в массиве, то мусор выдаёт.
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
28.06.2014, 16:16     В одномерном массиве произвести сортировку элементов по убыванию #11
Цитата Сообщение от MaksRodin Посмотреть сообщение
nt i=left,j=right; //с помощью этих индексов мы разделим массив на 3 части
На 3 части? Не 4 разве?
swap(arr[i], arr[j]); - если элемент не в своей части, то меняем части массива местами?
i++;
j--;
И увеличиваем i и уменьшаем j на единицу?
Части 3, местами меняем элементы.
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,748
Записей в блоге: 15
28.06.2014, 17:06     В одномерном массиве произвести сортировку элементов по убыванию #12
Можно так:
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
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <fstream>  // для работы с файлами
using namespace std;
 
int main()
{
    ifstream InFile("in.txt");  // создаём переменную с файлом
    const int size = 10;    // размер массива должен совпадать с количеством чисел в файле
    int arr[size]; // создаём массив
    if(InFile) // если файл найден, то выполняется следующий цикл:
    {   
        for(int i = 0; i != size; i++)
        {
            InFile >> arr[i];   // запись из файла в массив
        }
    }
    else
        cout << "file not found!!!";    // если файл не найден,
                                        // выводится предупреждение
 
// Сортируем массив методом пузырьковой сортировки:
    for(int a = 1; a < size; a++)
        for(int b = size - 1; b >= a; b--)
            {
                if(arr[b-1] < arr[b]) // сортируем по убыванию
                    {   
                        //Если значения элементов массива расположены не
                        //по порядку, то меняем их местами:
                        int t = arr[b-1];
                        arr[b-1] = arr[b];
                        arr[b] = t;
                    }
            }
    for(int i = 0; i != size; i++) // выводим все элементы на экран
        cout << arr[i] << " ";
 
    cout << endl;
    
    return 0;
}
MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 17:44  [ТС]     В одномерном массиве произвести сортировку элементов по убыванию #13
Спасибо ребята, сдал экзамен на 4!
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,748
Записей в блоге: 15
28.06.2014, 17:46     В одномерном массиве произвести сортировку элементов по убыванию #14
Цитата Сообщение от MaksRodin Посмотреть сообщение
Спасибо ребята, сдал экзамен на 4!
Да на здоровье! Только толку от этих экзаменов и этой учёбы, если знаний как таковых нету?
Croessmah
28.06.2014, 17:49
  #15

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
если знаний как таковых нету?
зато диплом есть

MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 17:51  [ТС]     В одномерном массиве произвести сортировку элементов по убыванию #16
Сессию сдаю, до диплома еще достаточно далеко
gru74ik
Модератор
 Аватар для gru74ik
3069 / 1314 / 164
Регистрация: 20.02.2013
Сообщений: 3,748
Записей в блоге: 15
28.06.2014, 17:52     В одномерном массиве произвести сортировку элементов по убыванию #17
Цитата Сообщение от Croessmah Посмотреть сообщение
зато диплом есть
А зачем диплом без знаний?

Цитата Сообщение от MaksRodin Посмотреть сообщение
Сессию сдаю, до диплома еще достаточно далеко
MaksRodin, чё-то стало интересно. А ты в итоге чей код преподу отдал?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2014, 17:53     В одномерном массиве произвести сортировку элементов по убыванию
Еще ссылки по теме:

C++ Выполнить сортировку массива по убыванию и проконтролировать ее результат. Произвести подсчет перестановок при сортировке
Выполнить сортировку массива по убыванию и проконтролировать ее результат. Произвести подсчет перестановок при сортировке C++
C++ Задана матрица целых чисел. Выполнить сортировку элементов в каждом столбце по убыванию

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

Или воспользуйтесь поиском по форуму:
MaksRodin
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 23
28.06.2014, 17:53  [ТС]     В одномерном массиве произвести сортировку элементов по убыванию #18
Код батона отдал и объяснил на изи.

Тебе спасибо, за то что откликнулся =) Лови репу
Yandex
Объявления
28.06.2014, 17:53     В одномерном массиве произвести сортировку элементов по убыванию
Ответ Создать тему
Опции темы

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