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

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

Войти
Регистрация
Восстановить пароль
 
Bllaaa
11 / 11 / 1
Регистрация: 08.12.2011
Сообщений: 148
#1

"Быстрая" сортировка - выдаётся ошибка - C++

09.06.2012, 18:44. Просмотров 480. Ответов 7
Метки нет (Все метки)

Здарвствуйте, мне совсем недавно потребовалась "Быстрая" сортировка. Я взял алгоритм с wikibooks
но компилятор подчёркивает "swap()" и отказывается работает. Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void qs(int* s_arr, int first, int last)
{
    int i = first, j = last, x = s_arr[(first + last) / 2];
 
    do {
        while (s_arr[i] < x) i++;
        while (s_arr[j] > x) j--;
 
        if(i <= j) {
            if (i < j) swap(s_arr + i, s_arr + j);
            i++;
            j--;
        }
    } while (i <= j);
 
    if (i < last)
        qs(s_arr, i, last);
    if (first < j)
        qs(s_arr, first,j);
}
Помогите исправить ошибку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 18:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Быстрая" сортировка - выдаётся ошибка (C++):

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

"Быстрая" сортировка с итерационным циклом вычисления медианы - C++
Написать программу на С++: &quot;Быстрая&quot; сортировка с итерационным циклом вычисления медианы. Для заданного интервала массива, в котором...

Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" - C++
Всем доброго суток времени прошу помогите найти ошибку при компиляции ошибок нет, при запуску всплывает ошибка. работа. в Visual studio...

"быстрая" сортировка (вызов функции) - C++
Здраствуйте, :drink: по лабе надо сделать много сортировок.. все сделано кроме метода &quot;быстрой&quot; сортировки.. ...

быстрая сортировка " разделяй и властвуй" - C++
задача : сортировать массив случайных чисел. алгоритм: * выбрать элемент, называемый опорным. * сравнить все остальные элементы с...

"Быстрая" сортировка двумерного массива - C++
Помогите пожалуйста!!! Нужно реализовать &quot;быструю&quot; сортировку для двумерного массива. Не ругайте, я пока что новичок, для одномерного...

7
qfisher
31 / 31 / 1
Регистрация: 24.05.2012
Сообщений: 156
09.06.2012, 18:46 #2
может стоит добавить using namespace std;

что конкретно пишет компилятор?
0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
09.06.2012, 18:59 #3
Так swap - это функция, которую ты должен написать... Она обменивает значения аргументов. В C/С++ её нет.

C++
1
2
3
4
5
6
7
void swap(int *a, int *b)
{
   int c;
   c=*a;
   *a=*b;
   *b=c;
}
Примерно так...
0
qfisher
31 / 31 / 1
Регистрация: 24.05.2012
Сообщений: 156
09.06.2012, 20:23 #4
Цитата Сообщение от Catstail Посмотреть сообщение
Так swap - это функция, которую ты должен написать... Она обменивает значения аргументов. В C/С++ её нет.
да ладно, а это что такое?

http://www.cplusplus.com/reference/algorithm/swap/
1
rofl113
10 / 10 / 1
Регистрация: 26.02.2012
Сообщений: 36
09.06.2012, 20:26 #5
Цитата Сообщение от qfisher Посмотреть сообщение
да ладно, а это что такое?

http://www.cplusplus.com/reference/algorithm/swap/
Не показывай фишки сразу.)) Сделав сам функцию он поймет как она работает.)
1
Bllaaa
11 / 11 / 1
Регистрация: 08.12.2011
Сообщений: 148
09.06.2012, 22:03  [ТС] #6
Я попрсил объяснить в чём ошибка.
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
09.06.2012, 22:10 #7
Цитата Сообщение от Bllaaa Посмотреть сообщение
Я попрсил объяснить в чём ошибка.
Выше указали ошибку и целых два решения, одно другого краше.
1
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
09.06.2012, 22:27 #8
Добавь вот это ПЕРЕД своей процедурой - все заработает.

C++
1
2
3
4
5
6
7
void swap(int *a, int *b)
{
   int c;
   c=*a;
   *a=*b;
   *b=c;
}
1
09.06.2012, 22:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 22:27
Привет! Вот еще темы с ответами:

Сортировка методом "быстрая сортировка" - C++
Здравствуйте! Имеется структура: struct BMS_Data { int* SortNodesList; double* NodesX; double* NodesY; ...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9" - C++
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; Hdd *next; Hdd *previous; };

Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова" - C++
Не знаю, в чем проблема. Написал такую программу #include &lt;stdio.h&gt; int n; int *a = new int; int T,i,s,count,k; int main() ...


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

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

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