Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 46

Быстрое сортирование

05.05.2020, 23:56. Показов 4797. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста исправить код для быстрой сортировки, что бы он начал работать, сейчас он выдает такие ошибки:
1. идентификатор "arr" не определен
2. идентификатор "swap" не определен
3. arr: необъявленный идентификатор
4. swap: идентификатор не найден

Вот сам код:
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
#include <iostream>
#include <algorithm>
#include <utility>
 
void qsort(int b, int e)
{
    int l = b, r = e;
    int piv = arr[(l + r) / 2];
    while (l <= r)
    {
        while (arr[l] < piv)
            l++;
        while (arr[r] > piv)
            r--;
        if (l <= r)
            std::swap(arr[l++], arr[r--]);
    }
    if (b < r)
        qsort(b, r);
    if (e > l)
        qsort(l, e);
}    /* ----- end of function qsort ----- */
 
int main() {
    qsort(1, 10);
}

P.S Я полнейший чайник в программировании, так что этот код я нашёл в интернете, но, к сожалению, даже готовый код не захотел у меня работать))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2020, 23:56
Ответы с готовыми решениями:

сортирование
в одномерном массиве сортировать элементы по возрастанию ( на языке Си) :gcray2:

Сортирование массива, по элементам
Нужно изменить массив таким образом чтобы сначала были все элементы равны нулю, а потом остальные. Массив должен быть действительным и...

Сортирование одномерного массива 3-я методами c++
Сделать программу, в которой за выбором ( cout&lt;&lt;&quot;1-вставка;2-обмен; 3- выбор: &quot;; cin&gt;&gt;metod; ) выбирать один с методом в...

4
115 / 72 / 48
Регистрация: 16.11.2012
Сообщений: 257
06.05.2020, 00:07
Лучший ответ Сообщение было отмечено ArtiSon4ik как решение

Решение

Доработал ваш код.
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 <algorithm>
#include <utility>
using namespace std;
void my_quick_sort(int *arr, int b, int e)
{
    int l = b, r = e;
    int piv = arr[(l + r) / 2];
    while (l <= r)
    {
        while (arr[l] < piv)
            l++;
        while (arr[r] > piv)
            r--;
        if (l <= r)
            std::swap(arr[l++], arr[r--]);
    }
    if (b < r)
        my_quick_sort(arr,b, r);
    if (e > l)
        my_quick_sort(arr,l, e);
} /* ----- end of function qsort ----- */
 
void print_massiv(int arr[], int n) {
    for (int i = 0; i <n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}
 
int main() 
{
    int n;
 
    int i;
    cout << "Array Size: ";
    cin >> n;
    cout << endl;
    int* arr = new int[n];
    for (i = 0; i<n; i++) {
        cout << "Array[" << i + 1 << "]: ";
        cin >> arr[i];
        cout << endl;
    }
    print_massiv(arr, n);
    my_quick_sort(arr, 0, n - 1);
    print_massiv(arr, n);
 
    return 0;
}
1
75 / 48 / 28
Регистрация: 07.01.2019
Сообщений: 168
06.05.2020, 00:08
Лучший ответ Сообщение было отмечено ArtiSon4ik как решение

Решение

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
void qsort(int b, int e, int* arr)
{
    int l = b, r = e;
    int piv = arr[(l + r) / 2];
    while (l <= r)
    {
        while (arr[l] < piv)
            l++;
        while (arr[r] > piv)
            r--;
        if (l <= r)
            std::swap(arr[l++], arr[r--]);
    }
    if (b < r)
        qsort(b, r, arr);
    if (e > l)
        qsort(l, e,arr);
} /* ----- end of function qsort ----- */
 
 
int main() {
    int* arr = new int[10]{ 10,2,3,4,0,6,3,4,5, 10 };
    qsort(0, 9, arr);
    for (int i = 0; i < 10; i++) {
        std::cout << arr[i] << " ";
    }
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.05.2020, 00:10
Лучший ответ Сообщение было отмечено ArtiSon4ik как решение

Решение

ArtiSon4ik, самого массива arr нет, сортировать нечего почему у Вас в коде не работает swap не подскажу. вариант без swap:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void quickSortR(int* a, int N) {
    
    int i=0, j=N, temp, p;
 
    p = a[ N>>1 ]; 
    
    do {
        while ( a[i] < p ) i++;
        while ( a[j] > p ) j--;
 
        if (i <= j) {
            temp = a[i]; a[i] = a[j]; a[j] = temp;
            i++; j--;
        }
    } while ( i<=j ); 
     
    if ( j > 0 ) quickSortR(a, j);
    if ( N > i ) quickSortR(a+i, N-i);
}
 
void Print (int *a, int n)
{
    for (int i = 0; i < n; i++)             
        cout << a[i] << " ";        
    cout << "\n";    
} 
 
int main()
{
    srand((int)time(0));
    int n;
    cout << "n="; cin >> n;
 
    int *a = new int[n];
    
    for (int i = 0; i < n; i++)    
        a[i]=rand()%9 + 1;
        
    cout << "Array:\n";
    Print(a,n);
    quickSortR(a,n-1);
    cout << "Sorted array:\n";
    Print(a,n);
    
    delete[]a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 46
06.05.2020, 14:40  [ТС]
Всем большое спасибо за ваши решения!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2020, 14:40
Помогаю со студенческими работами здесь

Сортирование нескольких строк как сделать?
Как сделать что бы он у меня все строки из файла сортировал, одну только сортирует у меня. #include &quot;stdafx.h&quot; ...

Быстрое изучение С++
Си знаю, C# знаю. На все про все у меня неделя. Что посоветуете? Заранее благодарен.

Быстрое шифрование
Народ добрый , день , такая задача решил делать курсач на тему криптография , вот первым делом буду использовать шифрование быстрым методом...

Быстрое умножение
Нужно написать алгоритм для быстрого умножения 2-ух 32-битных чисел. Кто подскажет быстрый алгоритм? (как в openssl, только я там...

Быстрое Преобразование Фурье
В качестве библиотеки взял хваленую IPP, и тут возник рад вопросов, вот код: packageSize = 4096; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru