C рандомизированной быстрой сортировки (улучшение функции разбиения)
Я студент-информатик (только начал), я работал над написанием из псевдокода рандомизированной сводной версии Quicksort. Я'Я написал и проверил это, и все это прекрасно работает, однако ...
Часть раздела выглядит слишком сложной, поскольку кажется, что я что-то упустил или переосмыслил. Я могу'не понимаю, если этоВсе в порядке, или если я сделал несколько ошибок, которых можно избежать.
Короче говоря: это работает, но как сделать лучше?
Заранее спасибо за помощь
void partition(int a[],int start,int end)
{
srand (time(NULL));
int pivotpos = 3; //start + rand() % (end-start);
int i = start; // index 1
int j = end; // index 2
int flag = 1;
int pivot = a[pivotpos]; // sets the pivot's value
while(ia[j]) // swap && sets new pivot, and restores the flag
{
swap(&a[i],&a[j]);
if(pivotpos == i)
pivotpos = j;
else if(pivotpos == j)
pivotpos = i;
flag++;
}
else if(a[i] == a[j]) // avoids getting suck on a mirror of values (fx pivot on pos 3 of : 1-0-0-1-1)
{
if(pivotpos == i)
j--;
else if(pivotpos == j)
i++;
else
{
i++;
j--;
}
flag++;
}
}
}