6 / 6 / 0
Регистрация: 17.12.2010
Сообщений: 34
1

Quick sort, не понятно некоторые моменты.

08.04.2012, 18:04. Показов 1683. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте
нужно реализовать quicksort
Есть код с учебника по которому мы учимся, и вот не понятно некоторые моменты кода

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
template <typename T>
void quick_sort(vector<T>& v, int low, int high) {
 
    // Do not solve recursively when faced with
    // only 1 or 2 elements
    if (low == high) {
        return ;
    }
    else if (low + 1 == high) {
        if (v[low] > v[high]) {
            swap(v[low], v[high]);
            return ;
        }
    }
 
    // select pivot
    int middle = (low + high) / 2;
    T pivot = v[middle];
    // вот здесь почему нужно делать swap c middle элементом???
    swap(v[middle], v[high]);
 
    // partition
    int i;
    int j;
    for (i = low, j = high - 1; ;) {
 
        while (v[i] < pivot && i < j) i++;//как работают эти два цикла
        while (pivot < v[j] && i < j) j--;//
 
        if (i < j) {
            swap(v[i], v[j]);
        }
        else {
            break;
        }
    }
 
    // place pivot in correct location
    if (i != high - 1 && j != high - 1) {
        swap( v[i], v[high]);
    }
 
    // quicksort sub-vectors
 
    if (i == low && j == low) {
        quick_sort(v, low + 1, high);
    }
    else if (i == high - 1 && j == high - 1) {
        quick_sort(v, low, high - 1);
    }
    else {
        quick_sort(v, low, i - 1);
        quick_sort(v, i + 1, high);
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2012, 18:04
Ответы с готовыми решениями:

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

Quick sort
!Хелпаните с сортировкой выдает ошибку ! USES Windows;...

Quick Sort, рекурсия
Помогите пожалуйста с рекурсией, пишу Быструю Сортировку, все нормально работает до второго вызова...

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

1
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
08.04.2012, 18:13 2
Салам Dzhos,
Цитата Сообщение от Dzhos Посмотреть сообщение
T pivot = v[middle]; // вот здесь почему нужно делать swap c middle элементом???
ответ заключается здесь


Цитата Сообщение от Dzhos Посмотреть сообщение
int i; int j; for (i = low, j = high - 1; ;) {
это и есть сам смысл QuickSort'a, мы рассматриваем от начало до середины.
1
08.04.2012, 18:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2012, 18:13
Помогаю со студенческими работами здесь

Quick sort Java
Что такое Quick sort in Java? С чем его едят? Может у кого будут более менее понятные примеры по...

Quick sort using vectors
Now that you have learned about three sorting algorithms with quadratic time complexity (Bubble,...

Реализация алгоритма Quick sort
пожалуйсто напишите алгоритм Quick sort

IndexOutOfRangeExeption в алгоритме Quick Sort
Доброго времени суток! Кто-то может подсказать, пожалуйста, в чем проблема? Мучаюсь 2-й день....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru