站点图标 陌路寒暄

排序排序排序

排序排序排序

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版