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

Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой - C++

Восстановить пароль Регистрация
 
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
18.08.2014, 20:40     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #1
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
#include <iostream>
#include <vector>
using namespace std;
void qSort( vector <int> &A,int nStart, int nEnd)
{    
    int L,R,c,X;
     if (nStart>=nEnd) return; 
     L=nStart; R=nEnd;
     X=A[(L+R)/2];
     while (L<=R)            
         {
           while (A[L]<X) L++; 
           while (A[R]>X) R--; 
           if (L<=R) 
           {
             c=A[L]; A[L]=A[R];  A[R]=c; 
             L++; R--;
           }   
         }
      qSort (A,nStart,R); 
      qSort (A,L,nEnd);  
     
}
int main(void)
{ 
     setlocale (0,"");
     
     vector <int> A;
     cout << "ââåäè  Г¬Г*Г±Г±ГЁГў (vector), ââîä Г§Г*ГЄГ®Г*Г·ГЁГІГ±Гї Г*óëåì : " << endl;
     int N; int count = 0;
     while ( N )
        {
           cout << "N = ";
           cin >> N; 
           if (N) A.push_back( N );  
        }
     qSort( A , 0, A.size() );
     cout << "îòñîðòèðîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў : " << endl;
     for ( int i = 0; i <  A.size(); i++) cout << A[i] << " ";
     
     
   
     system ("PAUSE");
}
Подскажите, пожалуйста, ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 20:40     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой
Посмотрите здесь:

C++ Написать и протестировать функцию compress(), которая "сжимает" строку, удаляя из нее все пробелы.
C++ Написать и протестировать функцию,которая "переворачивает" строку,передаваемую ей в качестве параметра
C++ Написать функцию, которая сортирует вещественный массив методом Хоара
C++ Проблемы с "Быстрой сортировкой"
C++ Функция: Написать и протестировать функцию, которая "сжимает" строку, удаляя из неё все пробелы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 268
Завершенные тесты: 1
18.08.2014, 21:02     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #2
Как бы вот она рабочая Алгоритмы сортировок
с ней и сравнивайте.
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
19.08.2014, 00:16     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #3
Вот в этом месте нужно использовать цикл с постусловием:
C++
1
2
3
4
5
6
7
int N; int count = 0;
while ( N )
{
   cout << "N = ";
   cin >> N; 
   if (N) A.push_back( N );  
}
На момент вхождения в цикл значение N не определено, соответственно проверка while(N) не имеет смысла. Ну и наличие переменной count никак не проявляется.
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
19.08.2014, 10:08  [ТС]     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #4
C++
1
2
3
4
5
6
do
        {
           cout << "N = ";
           cin >> N; 
           if (N) A.push_back( N );  
        } while ( N );
это переделал. Ошибку понял. но все равно где-то ошибка. ввожу 3,2,1,0 выводит 0,1,2 ... тройка куда делась???
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
19.08.2014, 11:00     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #5
Цитата Сообщение от arzhanok Посмотреть сообщение
выводит 0,1,2 ... тройка куда делась???
очевидно, остается за границей выводимого массива; попробуйте сделать i<= A.size()
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
19.08.2014, 11:37  [ТС]     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #6
нет, тогда если так сделать, и ввести , например, 5,4,3,2,1,0 , то выводится 1,2,3,4,5 и какой - то мусор еще вылазит...
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 268
Завершенные тесты: 1
19.08.2014, 11:54     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #7
arzhanok, скопируйте полностью код, что у вас получился.
Цитата Сообщение от Donnerwetter Посмотреть сообщение
i<= A.size()
Это точно не правильно.
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
19.08.2014, 12:18  [ТС]     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #8
Vaiz, сама сортировка работает нормально. мне именно к вектору ее приделать не получается...
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 268
Завершенные тесты: 1
19.08.2014, 12:43     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #9
Цитата Сообщение от arzhanok Посмотреть сообщение
Vaiz, сама сортировка работает нормально. мне именно к вектору ее приделать не получается...
Весь код покажите, вы ведь уже вносили изменения.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,751
Записей в блоге: 1
Завершенные тесты: 5
19.08.2014, 13:04     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #10
Цитата Сообщение от arzhanok Посмотреть сообщение
C++
1
2
3
4
5
6
do
{
    cout << "N = ";
    cin >> N; 
    if (N) A.push_back( N ); *
} while ( N );
это переделал. Ошибку понял. но все равно где-то ошибка. ввожу 3,2,1,0 выводит 0,1,2 ... тройка куда делась???
А меня еще интересует вопрос: ноль откуда взялся?
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
19.08.2014, 16:10  [ТС]     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #11
сам не пойму...
if (N) A.push_back( N ); // если не ноль, тогда A.push_back( N ), получается и ноля не должно быть ... )))

Добавлено через 1 минуту
сам не пойму...
if (N) A.push_back( N ); // если не ноль, тогда A.push_back( N ), получается и ноля не должно быть ... )))

Добавлено через 1 минуту
Vaiz,
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
#include <iostream>
#include <vector>
using namespace std;
void qSort( vector <int> &A,int nStart, int nEnd)
{    
    int L,R,c,X;
     if (nStart>=nEnd) return; 
     L=nStart; R=nEnd;
     X=A[(L+R)/2];
     while (L<=R)            
         {
           while (A[L]<X) L++; 
           while (A[R]>X) R--; 
           if (L<=R) 
           {
             c=A[L]; A[L]=A[R];  A[R]=c; 
             L++; R--;
           }   
         }
      qSort (A,nStart,R); 
      qSort (A,L,nEnd);  
     
}
int main(void)
{ 
     setlocale (0,"");
     
     vector <int> A;
     cout << "введи  массив (vector), ввод закончится нулем : " << endl;
     int N; 
     do
        {
           cout << "N = ";
           cin >> N; 
           if (N) A.push_back( N );  
        } while ( N );
     qSort( A , 0, A.size() );
     cout << "отсортированный массив : " << endl;
     for ( int i = 0; i <  A.size(); i++) cout << A[i] << " ";
     
     
   
     system ("PAUSE");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2014, 16:18     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой
Еще ссылки по теме:

Написать функцию, которая зануляет массив переданный как параметр и возвращает кол-во отрицательных элементов до зануления? C++
C++ Написать функцию, которая сортирует массив по возрастанию или по убыванию, в зависимости от третьего параметра функции.
Написать программу, которая методом обмена "пузырька" сортирует по убыванию введенный с клавиатуры одномерный массив C++

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

Или воспользуйтесь поиском по форуму:
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 268
Завершенные тесты: 1
19.08.2014, 16:18     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой #12
Цитата Сообщение от arzhanok Посмотреть сообщение
нет, тогда если так сделать, и ввести , например, 5,4,3,2,1,0 , то выводится 1,2,3,4,5 и какой - то мусор еще вылазит...
Ну вроде у вас все правильно получается, 0 является признаком конца ввода и в массив не вносится, думаю вы это уже сами поняли.
Yandex
Объявления
19.08.2014, 16:18     Написать функцию, которая сортирует переданный ей динамический массив "быстрой" сортировкой
Ответ Создать тему
Опции темы

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