排序排序排序
时间: 1ms 内存:128M
描述:
有n个数,要你从小到大进行输出排序
输入:
n(0<n<=100005)
然后是n个整数
输出:
输出n个数从小到大的顺序
示例输入:
5
1
2
5
1
2
示例输出:
1
1
2
2
5
提示:
参考答案(内存最优[1384]):
#include <stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
quick(a,0,n-1);
for(i=0;i<n;i++)
printf("%d\n",a[i]);
return 0;
}
void quick(int a[],int left,int right)
{
if(left>=right) return;
int i=left,j=right;
int t=a[left];
while(i<j)
{
while(a[j]>=t&&i<j)j--;
while(a[i]<=t&&i<j)i++;
if(i<j)
{
int t1=a[j];a[j]=a[i];a[i]=t1;
}
}
a[left]=a[i];a[i]=t;
quick(a,left,i-1);
quick(a,i+1,right);
return;
}
参考答案(时间最优[8]):
#include <bits/stdc++.h>
using namespace std;
const int Max=100005;
const int MMax=10000007;
int a[Max+10];
int main()
{
// freopen("out.txt","w",stdout);
// freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(int i=0;i<n;i++)
printf("%d\n",a[i]);
// srand(time(0) ) ;//%MMax;
//
// for(int i=0;i<=Max;++i)
// {
// int t = rand(); //%MMax;
// cout<<t<<endl;
// }
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。