题目1185:特殊排序(2003-2005年华中科技大学计算机研究生机试真题)

来源:互联网 发布:mac matlab好用吗 编辑:程序博客网 时间:2024/04/28 01:45
import java.util.Scanner; public class Main{     /**     * @param args     */    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);                 while( scanner.hasNext() ){            int n = scanner.nextInt();                         int num[] = new int[n];                         for (int i = 0; i < n; i++) {                 num[i] = scanner.nextInt();            }                                      quickSort(0,n-1,num);            System.out.println(num[n-1]);                         if(n == 1){                System.out.println("-1");                continue;            }                         for (int i = 0; i < num.length - 1; i++) {                if(i == num.length - 2){                    System.out.println(num[i]);                }else{                    System.out.print(num[i]+" ");                }                             }                                  }    }         private static void quickSort(int low, int high, int[] array) {        int key = array[low];        int begin = low;        int end = high;                 while(low < high){            while( array[low] <= key && low < high){                low++;            }            while( array[high] > key && low < high){                high--;            }            if(low < high){                int temp = array[low];                array[low] = array[high];                array[high] = temp;            }        }                 if( array[low] < key){            array[begin] = array[low];            array[low] = key;        }                 if(begin < low-1){            quickSort(begin, low-1, array);        }        if(low < end){            quickSort(low, end, array);        }    }  } /**************************************************************    Problem: 1185    User: yihukurama    Language: Java    Result: Accepted    Time:980 ms    Memory:81224 kb****************************************************************/

题目描述:

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

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

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


0 0
原创粉丝点击