码迷,mamicode.com
首页 > 其他好文 > 详细

九度OJ

时间:2015-02-13 00:20:15      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

题目1185:特殊排序
时间限制:1 秒内存限制:32 兆特殊判题:否提交:10572解决:2540
题目描述:
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
输入:
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。
接下来的一行有N个整数。
输出:
可能有多组测试数据,对于每组数据,
第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。
第二行将排序的结果输出。
样例输入:
4
1 3 4 2
样例输出:
4
1 2 3
提示:

如果数组中只有一个数,当第一行将其输出后,第二行请输出"-1"。


冒泡排序的做法

#include<stdio.h>
 
void Bubblesort(int *a,int n)
{
    int swap;
    for(int i=1;i<=n-1;i++)
    {
        for(int j=n-1;j>=i;j--)
        {
            if(a[j]>a[j+1])
            {
                swap=a[j+1];
                a[j+1]=a[j];
                a[j]=swap;
            }
        }
    }
}
 
 
int main()
{
    int n;
    int num[1001];
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&num[i]);
 
        if(n==1)
        {
            printf("%d\n-1\n",num[1]);
            continue;
        }
 
        Bubblesort(num,n);
 
        printf("%d\n",num[n]);
        for(int i=1;i<=n-2;i++)
            printf("%d ",num[i]);
        printf("%d\n",num[n-1]);
 
    }
}
/**************************************************************
    Problem: 1185
    User: paomolvcha1
    Language: C
    Result: Accepted
    Time:80 ms
    Memory:912 kb
****************************************************************/


使用C语言标准库的快速排序qsort的方法

#include<stdio.h>
#include<stdlib.h>
 
int cmp(const void *a,const void *b)
{
    return *(int*)a-*(int*)b;
}
 
 
int main()
{
     
    int n;
    int num[1001];
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&num[i]);
 
        if(n==1)
        {
            printf("%d\n-1\n",num[1]);
            continue;
        }
 
        qsort(num+1,n,sizeof(num[1]),cmp);
 
        printf("%d\n",num[n]);
        for(int i=1;i<=n-2;i++)
            printf("%d ",num[i]);
        printf("%d\n",num[n-1]);
 
    }
}
/**************************************************************
    Problem: 1185
    User: paomolvcha1
    Language: C
    Result: Accepted
    Time:30 ms
    Memory:912 kb
****************************************************************/




使用C++ stl标准库排序算法的做法(推荐)

#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{ 
    int n;
    int buff[1024];
 
    while(~scanf("%d",&n))
    {
        //input
        for(int i=0;i<n;i++)
            scanf("%d",&buff[i]);
 
        //n=1
        if(n==1)
        {
            printf("%d\n-1\n",buff[0]);
            continue;
        }
 
        //n>=2
        sort(buff,buff+n);
        for(int i=0;i<n-2;i++)
            printf("%d ",buff[i]);
        printf("%d\n",buff[n-2]);
    }
 
    return 0;
}
/**************************************************************
    Problem: 1185
    User: paomolvcha1
    Language: C++
    Result: Wrong Answer
****************************************************************/


九度OJ

标签:

原文地址:http://blog.csdn.net/u013011841/article/details/43776785

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!