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

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

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

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

09.06.2012, 18:44. Просмотров 455. Ответов 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);
}
Помогите исправить ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 18:44     "Быстрая" сортировка - выдаётся ошибка
Посмотрите здесь:

C++ быстрая сортировка " разделяй и властвуй"
"Быстрая" сортировка двумерного массива C++
"Быстрая" сортировка с итерационным циклом вычисления медианы C++
C++ "быстрая" сортировка (вызов функции)
Ошибка: "main" должен вернуть "int'' C++
C++ Быстрая Сортировка quick-sort (ошибка в 40 строке) как исправить?
Синтаксическая ошибка: отсутствие ";" перед "<" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
qfisher
30 / 30 / 1
Регистрация: 24.05.2012
Сообщений: 156
09.06.2012, 18:46     "Быстрая" сортировка - выдаётся ошибка #2
может стоит добавить using namespace std;

что конкретно пишет компилятор?
Catstail
Модератор
22317 / 10722 / 1744
Регистрация: 12.02.2012
Сообщений: 17,797
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;
}
Примерно так...
qfisher
30 / 30 / 1
Регистрация: 24.05.2012
Сообщений: 156
09.06.2012, 20:23     "Быстрая" сортировка - выдаётся ошибка #4
Цитата Сообщение от Catstail Посмотреть сообщение
Так swap - это функция, которую ты должен написать... Она обменивает значения аргументов. В C/С++ её нет.
да ладно, а это что такое?

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

http://www.cplusplus.com/reference/algorithm/swap/
Не показывай фишки сразу.)) Сделав сам функцию он поймет как она работает.)
Bllaaa
11 / 11 / 1
Регистрация: 08.12.2011
Сообщений: 148
09.06.2012, 22:03  [ТС]     "Быстрая" сортировка - выдаётся ошибка #6
Я попрсил объяснить в чём ошибка.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
09.06.2012, 22:10     "Быстрая" сортировка - выдаётся ошибка #7
Цитата Сообщение от Bllaaa Посмотреть сообщение
Я попрсил объяснить в чём ошибка.
Выше указали ошибку и целых два решения, одно другого краше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 22:27     "Быстрая" сортировка - выдаётся ошибка
Еще ссылки по теме:

C++ Быстрая сортировка: ошибка "Stack overflow"
Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" C++
C++ Ошибка: namespace "geoo" has no member "ch"
C++ Ошибка усечение из "double" к "float"
C++ Ошибка "идентификатор "count" не определен"

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
22317 / 10722 / 1744
Регистрация: 12.02.2012
Сообщений: 17,797
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;
}
Yandex
Объявления
09.06.2012, 22:27     "Быстрая" сортировка - выдаётся ошибка
Ответ Создать тему
Опции темы

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