int partition(int arr[], int low, int high) {
int i = low;
int j = high;
int base = arr[low];
if (low < high)
{
while (i < j)
{
while (i < j && arr[j] >= base)
{
j--;
}
if (i < j)//右边小于基数
{
arr[i++] = arr[j];
//i++;//或arr[i++] = arr[j];
}
while (i < j && arr[i] < base)
{
i++;
}
if (i < j)//左侧大于基数
{
arr[j--] = arr[i];
//j--;
}
arr[i] = base;
}
}
return i;
}
void QuickSort(int *arr, int low, int high)
{
if (low < high)
{
int index = partition(arr, low, high );
cout << index << endl;
QuickSort(arr, low, index - 1);
QuickSort(arr, index + 1, high);
}
}
int main(void)
{
int arr[] = { 163, 161, 158, 165, 171, 170, 163, 159, 162 };
int len = sizeof(arr) / sizeof(arr[0]);
QuickSort(arr, 0, len - 1);
for (int i = 0; i < len; i++)
{
cout << arr[i] << "\t";
}
return 0;
}