Попытка реализовать быструю сортировку в структурах c - сортировки - PullRequest
1 голос
/ 14 декабря 2011

Возникла небольшая проблема с моей быстрой сортировкой - я пытаюсь пройти мимо, но продолжаю делать что-то не так. Любая идея будет принята с благодарностью.

В коде реализована общая быстрая сортировка, которую я нашел в Интернете. По сути, я пытаюсь скопировать его, но сортировать по расстоянию структуры. Поэтому, если расстояние меньше - я хочу переместить два файла и отсортировать их соответствующим образом.

Спасибо!

typedef struct Tag 
{
    char classify;
    float pointX;
    float  pointY;
    float distance;
}PointClassify;

void swap(PointClassify &i, PointClassify &j) 
{
    PointClassify temp;
    temp = i;
    i = j;
    j = temp;
}
void quickSort(PointClassify item[], int start, int end)
{
    float pivot;
    int i = start, j = end;

    pivot = item[(start+end)/2].distance;

    while(i <= j)
    {   
            while(item[i].distance < pivot)
            {   
                    i = i+1;
            }   
            while(item[j].distance > pivot)
            {   
                    j = j-1;
            }   
            if(i <= j)
            {   
                    swap(item[i],item[j]);
                    i = i+1;
                    j = j-1;
            }   
     }   
 fprintf(stderr, "This is the number %d \n", item[i].distance);
    if(start < j)
    {   
            quickSort(item, start, j); 
    }   
    if(i < end)
    {   
            quickSort(item, i, end);
    }   
}

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Изменить это:

void swap(PointClassify &i, PointClassify &j) 

к этому:

void swap(PointClassify *i, PointClassify *j) 

В C, в объявлении, * указывает, что переменная является указателем на что-то такого типа. Вы используете оператор &, чтобы получить адрес переменной. Вы будете использовать его при вызове функции, например:

swap(&item[i], &item[j]);
1 голос
/ 14 декабря 2011

Не компилируется?

передача по ссылке - это функция C ++. Используйте указатели:

swap(PointClassify *i, PointClassify *j) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...