#include <stdio.h>
// 交换函数
void mySwap(int *a, int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
// 打印函数
void myPrint(int *a, int len)
{
int i;
for (i = 0; i < len; i++)
printf("%4d", a[i]);
printf("\n");
}
int partion(int *a, int left, int right)
{
int pivot = a[right]; // 以最后一个元素作为基准值
while (left < right)
{
while (a[left]<=pivot && left<right)
left++;
if (left < right)
a[right--] = a[left];
while (a[right]>=pivot && left<right)
right--;
if (left < right)
a[left++] = a[right];
}
a[left] = pivot;
return left;
}
// 快速排序
void QuickSort(int *a, int left, int right)
{
if (left < right)
{
int pivotIndex = partion(a, left, right); // 计算基准值下标
QuickSort(a, left, pivotIndex-1); // 对左半部分做快速排序
QuickSort(a, pivotIndex+1, right); // 对右半部分做快速排序
}
}
int main()
{
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
int len = sizeof arr / sizeof(int);
QuickSort(arr, 0, len-1);
myPrint(arr, len);
return 0;
}