#include <stdio.h>
int partionLxx(int a[], int i, int j)
{
int pivot = a[i];
while(i < j)
{
while(i < j && pivot <= a[j])
j--;
if(i < j)
a[i] = a[j];//pivot保留,该位置处被找到的小值覆盖
while(i < j && a[i] <= pivot)
i++;
if(i < j)
a[j] = a[i];//a[j]并未填充pivot,依旧为上次找到的小值,被覆盖所以无所谓
}
a[i] = pivot;//找不到不符合顺序的,该位置即为pivot,将其填充;最后才正式放置Pivot
return i;
}
void quickSortLxx(int a[], int low, int high)
{
int pivotPos;
if(low >= high)
{
return;
}
pivotPos = partionLxx(a, low, high);
quickSortLxx(a, low, pivotPos-1);
quickSortLxx(a, pivotPos+1, high);
}
void main()
{
int i,n;
int a[200];
//读入数据
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
quickSortLxx(a,0,n-1); //快速排序调用
//输出排序后的结果
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
快速排序Lxx
最新推荐文章于 2020-08-19 21:33:16 发布