首页 > ACM题库 > 九度OJ > 九度-1185-特殊排序[解题代码]
2013
12-13

九度-1185-特殊排序[解题代码]

题目来源:2003-2005年华中科技大学计算机研究生机试真题

题目描述:
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。

输入:
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。
接下来的一行有N个整数。
输出:
可能有多组测试数据,对于每组数据,
第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。
第二行将排序的结果输出。
样例输入:
4
1 3 4 2
样例输出:
4
1 2 3
提示:
如果数组中只有一个数,当第一行将其输出后,第二行请输出”-1″。


java 代码如下:

import java.io.BufferedInputStream;
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(new BufferedInputStream(System.in));
		while(s.hasNextInt()){
			int n = s.nextInt();
			int arr[] = new int[n];
			for(int i=0; i<n; i++){
				arr[i] = s.nextInt();
			}
			Arrays.sort(arr);
			System.out.println(arr[n-1]);
			for(int i=0; i<n-1; i++){
				if(i != n-2)
					System.out.print(arr[i]+" ");
				else
					System.out.print(arr[i]);

			}
			if( n==1)
				System.out.print(-1);
			System.out.println();
		}
	}

}

/**************************************************************
	Problem: 1185
	User: coder
	Language: Java
	Result: Accepted
	Time:2450 ms
	Memory:82380 kb
****************************************************************/

C语言代码:

#include<stdlib.h>
#include<stdio.h>

int main()
{
    int n,i,j,x[1001],tmp;
    while(scanf("%d",&n)!=EOF && n>=1 &&n<=1000)
    {
        for(i=0;i<n;i++)
            scanf("%d",&x[i]);
        if(n==1)
        {
            printf("%d\n",x[0]);
            printf("-1\n");
        }
        else
        {

            for(i=0;i<n-1;i++)
            {
                if(x[i]>x[i+1])
                {
                    tmp=x[i+1];
                    x[i+1]=x[i];
                    x[i]=tmp;
                }
            }
            printf("%d\n",x[n-1]);
            for(i=0;i<n-2;i++)
            {
                for(j=0;j<n-i-2;j++)
                {
                    if(x[j]>x[j+1])
                    {
                        tmp=x[j+1];
                        x[j+1]=x[j];
                        x[j]=tmp;
                    }
                }
            }
                        printf("%d",x[0]);
            for(i=1;i<n-1;i++)
                printf(" %d",x[i]); 
            printf("\n");
        }

    }
    return 0;
}

/**************************************************************
    Problem: 1185
    User: 苏黎狼
    Language: C
    Result: Accepted
    Time:80 ms
    Memory:912 kb
****************************************************************/