Быстрая сортировка

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
prikolist
Сообщения: 38
Зарегистрирован: 19 ноя 2008, 13:09

Дошёл до темы быстрой сортировки, набрал код, начал компилировать. Что странно, всё написано правильно, уже проверял, 8 раз, программа компилируется, но результат отсортированного массива не выдаёт, выдаёт только исходный результат.

Код: Выделить всё

#include <iostream>
using namespace std;

void quicksort(char *items, int len);
void qs(char *items, int left, int right);

int main()
{
    setlocale(0,"");
    char str[] = "вгдба";
    cout<<"Масив в исходном порядке: "<<str<<endl;
    quicksort(str,strlen(str));
    cout<<"Отсортированный масив: "<<str<<endl;
cin.get();
}


void quicksort(char *items, int len)
{
    qs(items,0, len - 1);
}

void qs(char *items, int left, int right)
{
    int i,j;
    char x,y;
    i = left;    j = right;
    x = items[(left+right)/2];
    do {
        while((items[i] < x) && (i < right)); i++;
        while((x < items[j]) && (j > left)); j--;
    if(i<=j)
        {
            y = items[i];
            items[i] = items[j];
            items[j] = y;
            i++; j--;
        }
    } while(i <= j);

if(left < j) qs(items,left,j);
if(i < right) qs(items,i,right);
}



Аватара пользователя
Airhand
Сообщения: 239
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

У тебя циклы while - пустые. Так и должно быть ? Потом, после кождого цикла, идёт одно действие. Разберись тут.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

&quot писал(а):Что странно, всё написано правильно, уже проверял, 8 раз, программа компилируется
8 раз проверял, что программа компилируется или что программа работает? Проверяют программы с помощью отладки, а не путём восьмикратной рекомпиляции :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

...

гляди аттачь(переименуй разрешение на rar), там найдешь нужный метод (там несколько типов сортировок)

"Что странно, всё написано правильно, .... выдаёт только исходный результат. "

афтар сам себе противоречит....
Ответить