int partHoare (int a[], int p, int r) {
int x=a[p],i=p-1,j=r;
while (1)
{
do j--; while (a[j] > x);
do i++; while (a[i] < x);
if (i < j) // надо ли после этого ещё сравнивать a[i]>a[j]?
swap(&a[i], &a[j]);
else
return j+1;
}
}
void QuickSort (int a[], int start, int end) {
int q;
if (end-start<2) return;
q = partHoare (a, start, end);
QuickSort (a, start, q);
QuickSort (a, q, end);
}
while (a[j] > x) j--;
while (a[i] < x) i++;
void swap(int* i1, int* i2)
{
*i1 ^= *i2;
*i2 ^= *i1;
*i1 ^= *i2;
}
int partHoare (int a[], int p, int r) {
int x=a[p],i=p-1,j=r;
while (1)
{
while (a[j] > x) j--;
while (a[i] < x) i++;
if (i < j)
swap(&a[i], &a[j]);
else
return j+1;
}
}
void QuickSort (int a[], int start, int end) {
int q;
if (end-start<2) return;
q = partHoare (a, start, end);
QuickSort (a, start, q);
QuickSort (a, q, end);
}
int main(int argc, char* argv[])
{
int a[8] = {9,6,3,4,10,8,2,7} ;
QuickSort(a, 0, 7) ;
return 0;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.