1003.快速排序
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给定一个数列,用快速排序算法把它排成升序。
输入
第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。
输出
输出排序后的数列,每个数字占一行。
输入样例
5
3 2 1 4 5
3 2 1 4 5
输出样例
1
2
3
4
5
2
3
4
5
#include <stdio.h> int n; int a[10001]; void quicksort(int left,int right) { int i,j,t,temp; if(left>right) return; temp = a[left]; 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 argc, char const *argv[]) { int i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); quicksort(0,n-1); for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }
个人建议背会该段代码。。。。。。