Add 快速排序

master
puy4bwhfe 4 years ago
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…
Cancel
Save