#include <stdio.h>
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];
right--;
}
while (a[right] >= pivot && left < right)
{
right--;
}
if (left < right)
{
a[left] = a[right];
left++;
}
}
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 a[] = {5,8,6,0,9,4,3,2,1,7};
int len = sizeof(a)/sizeof(a[0]);
quickSort(a, 0, len-1);
myPrint(a, len);
return 0;
}
快速排序
最新推荐文章于 2022-11-18 15:33:56 发布