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

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

Войти
Регистрация
Восстановить пароль
 
Pchel
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 26
#1

Быстрая Сортировка quick-sort (ошибка в 40 строке) как исправить? - C++

05.11.2012, 16:02. Просмотров 488. Ответов 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
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <vector>
using std::endl;
using std::cout;
using std::vector;
 
template<class T>
void print_vector( vector<T>& v);
template<class T>
void prepare_vector(vector<T>* v);
template <class T>
void QuickSort(vector<T> *v,int left,int right);
 
int main(void)
{
    setlocale(LC_ALL,"Russian");
    vector<int> v(30,0);
    prepare_vector(&v);
    cout<<"Сгенерированный массив: "<<endl;
    print_vector(v);
    cout<<"Отсортированный массив: "<<endl;
    QuickSort(&v,0,v.size());
    print_vector(v);
    return 0;
    
}
template <class T>
void QuickSort(vector<T> *v,int left,int right)//левая и правая граница подмассивов
{
    T& med = (*v)[left];
    int l=left;
    int r =right;
    do
    
    {
        try
        {
        while((*v)[l]<med)
            ++l;
        while(v->at(r)>med)
            --r;
        }
        catch(std::out_of_range& ex)
        {
            cout<<"Информация из объекта исключения:"<<ex.what()<<endl;
        };
        if(l<=r)
        {
            std::swap((*v)[l],(*v)[r]);
            ++l;
            --r;
        }
        if(left<r)
            QuickSort(v,left,r);
        if(right>l)
            QuickSort(v,l,right);
 
    } while(l<=r);
}
template<class T>
void print_vector(vector<T>& v)
{
    for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)
        cout<<*iter<<' ';
    cout<<endl;
}
template<class T>
void prepare_vector(vector<T>* v)
{
    for(vector<int>::iterator iter=v->begin();iter!=v->end();iter++)
        *iter= std::rand() % 100;
}
Добавлено через 1 минуту
Информация из объекта исключения invalid vector<T> subscript. Ошибка в 40 строке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 16:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Быстрая Сортировка quick-sort (ошибка в 40 строке) как исправить? (C++):

Сортировка Quick Sort - C++
Можно написать код и коментами.

Quick sort c++ - C++
Добрый день. Есть вопрос, как можно реализовать Quick sort с подсчётом перестановок. По условию задания у нас есть 10000 элементов. ...

Quick sort using vectors - C++
Now that you have learned about three sorting algorithms with quadratic time complexity (Bubble, (./selection) and Insertion sorts) you...

Алгоритм Быстрой сортировки (Quick Sort) - C++
Всем доброго времени суток. Реализовал Быструю Сортировку на C++. Всё работает. Только препод требует доказать, что мой алгоритм...

Quick sort, не понятно некоторые моменты. - C++
здравствуйте нужно реализовать quicksort Есть код с учебника по которому мы учимся, и вот не понятно некоторые моменты кода ...

Метод сортировки quick sort ведомость абитуриентов - C++
Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит: Ф.И.О. абитуриента, оценки. Определить средний балл по...

2
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.11.2012, 16:28 #2
строку 22:
Цитата Сообщение от Pchel Посмотреть сообщение
C++
1
QuickSort(&v,0,v.size());
замените на:
C++
1
    QuickSort(&v,0,v.size()-1);
1
Pchel
1 / 1 / 0
Регистрация: 04.11.2012
Сообщений: 26
05.11.2012, 16:36  [ТС] #3
Спасибо Вам, огромное!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2012, 16:36
Привет! Вот еще темы с ответами:

Написать функцию Quick Sort для массива с 2000 элементов - C++
Написать функцию Quick Sort. Использовать написанную функцию для сортировки массива типа double на 2000 элементов. Нужна помощь:-|

в строке cout«num[t][i]; ошибка как исправить? - C++
в строке cout«num; ошибка #include &lt;iostream&gt; using namespace std; int main() { int t,i, num; /* загрузка чисел */ ...

Быстрая сортировка и хвостовая рекурсия(как реализовать?) - C++
Как реализовать хвостовую рекурсию в быстрой сортировке? К примеру вот программа быстрого поиска: void qsort (int b, int e) { ...

Быстрая сортировка: ошибка "Stack overflow" - C++
Не понмаю, пишет STACK OVERFLOUDED!!!! не знаю в чем проблема. #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; using...


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

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

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