parent
0524d37f0c
commit
757629aa6f
@ -0,0 +1,44 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
int a[101], n;//定义成全局变量,方便在子函数中使用;
|
||||||
|
void quicksort(int left, int right)
|
||||||
|
{
|
||||||
|
int i, j, t, temp;
|
||||||
|
if(left > right)
|
||||||
|
return;
|
||||||
|
temp = a[left];//temp中存的基准数
|
||||||
|
i = left;
|
||||||
|
j = right;
|
||||||
|
while(i != j)
|
||||||
|
{
|
||||||
|
//顺序很重要,要先从右往左找
|
||||||
|
while(a[j] > temp && i < j)
|
||||||
|
j --;
|
||||||
|
//再从左往又找
|
||||||
|
while(a[i] <= temp && i < j)
|
||||||
|
i ++;
|
||||||
|
//交换两个数所在数组中的位置
|
||||||
|
if(i < j)
|
||||||
|
{
|
||||||
|
t = a[i];
|
||||||
|
a[i] = a[j];
|
||||||
|
a[j] = t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//最终将基准数归位
|
||||||
|
a[left] = a[i];
|
||||||
|
a[i] = temp;
|
||||||
|
quicksort(left, i - 1);//继续处理左边的,这里是一个递归的过程
|
||||||
|
quicksort(i + 1, right);//继续处理右边的
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int j ,i, t;
|
||||||
|
//读入数据
|
||||||
|
scanf("%d", &n)
|
||||||
|
for(int i = 1; i <= n; i ++)
|
||||||
|
scanf("%d", &a[i]);
|
||||||
|
quicksort(1,n);
|
||||||
|
for(int i = 1; i <= n; i ++)
|
||||||
|
printf("%d ",a[i]);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in new issue