采用分治,求解,组合的步骤完成快速排序。
int Partition(int test[], int low, int high);
void QuickSort(int *a, int low, int high)
{
int pivot;
if (NULL == a || low >= high)
{
return;
}
if (low < high)
{
pivot = Partition(a, low, high);
QuickSort(a, low, pivot - 1);
QuickSort(a, pivot + 1, high);
}
}
int Partition(int test[], int i, int j)
{
int pivot = test[i];
while (i < j)
{
while (test[j] >= pivot && i <= j)
{
j--;
}
if (i < j)
{
test[i++] = test[j];
}
while (i < j && test[i] <= pivot)
{
i++;
}
if (i < j)
{
test[j--] = test[i];
}
}
test[i] = pivot;
return i;
}