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