noj快排
1003.快速排序
時限:1000ms內存限制:10000K 總時限:3000ms
描述
給定一個數列,用快速排序算法把它排成升序。
輸入
第一行是一個整數n(n不大于10000),表示要排序的數的個數;下面一行是用空格隔開的n個整數。
輸出
輸出排序后的數列,每個數字占一行。
輸入樣例
5
3 2 1 4 5
輸出樣例
1
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;
}
個人建議背會該段代碼。。。。。。
總結
- 上一篇: SAP Spartacus - Prog
- 下一篇: mht文件无法打开的解决办法