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

Не работает быстрая сортировка

20.12.2013, 01:36. Показов 353. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
У меня не выходит быстрая сортировка. Проблема в функции partition.

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
73
74
75
76
77
78
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
const int n=25;
struct INF
{
    int key;
    char info;
}A[n];
 
int pivot(int,int);
int partition(int,int,int);
void quicksort(int,int);
 
 
void main()
{
    srand(time(0));
    for(int i=0; i<n; i++)
    {
        if (i%3==0) cout<<endl;
        A[i].key=rand()%100;
        A[i].info=rand()%25+65;
        cout<<setw(2)<<A[i].key<<"--"<<A[i].info<<"         ";
    }
    cout<<endl<<endl<<endl<<endl;
    int i=0, j=n-1;
    quicksort(i,j);
    for(int i=0; i<n; i++)
    {
        if (i%3==0) cout<<endl;
        cout<<setw(2)<<A[i].key<<"--"<<A[i].info<<"         ";
    }
    system("pause");
}
 
int pivot(int i, int j)
{
    int fkey=A[i].key;
    for (int k=i+1; k<=j; k++)
    {
        if (A[k].key>fkey) return k;
        if(A[k].key<fkey) return i;
    }
    return -1;
}
 
int partition(int i, int j, int pivot)
{
    int l,r;
    l=i;
    r=j;
    do
    {
        swap(A[l],A[r]);
        while (A[l].key<pivot) l++;
        while (A[r].key>=pivot) r--;
    }while (l<=r);
    return 2;
}
 
void quicksort(int i, int j)
{
    
    int piv;
    int pivindex;
    int k;
    pivindex=pivot(i,j);
    if(pivindex!=-1)
    {
        piv=A[pivindex].key;
        k=partition(i,j,piv);
        quicksort(i,k-1);
        quicksort(k,j);
    }
}
Добавлено через 42 минуты
up!

Добавлено через 41 минуту
up!

Добавлено через 53 минуты
up!

Добавлено через 28 минут
Проблема решена!
Спасибо за помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2013, 01:36
Ответы с готовыми решениями:

Не работает быстрая сортировка для двумерного массива
Здравствуйте, возникла проблема, не работает быстрая сортировка по возрастанию абсолютных величин...

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным...

Быстрая сортировка (сортировка Хоара) для связных списков
есть у кого готовый алгоритм? или подскажите как реализовать

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

0
20.12.2013, 01:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2013, 01:36
Помогаю со студенческими работами здесь

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара)
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода...

Быстрая сортировка (сортировка методом Хоара)
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке...

Сортировка расчёской и быстрая сортировка
В файле in.txt записана последовательность целых чисел. Заданными методами отсортировать числа и...

Сортировка Хоара / Быстрая сортировка
Доброго времени суток. Написал реализацию алгоритма быстрой сортировки. void SortHhoar(int...


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

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

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