我试图解决经典的计数排序问题。
我的o/p是对的,但是超过了时间限制。我如何优化下面的代码。
我的记忆力不好。
时限:5秒
源限制:50000字节

class TurboStart {
    static int integerArray[] = new int[1000001];

    public static void main(String[] args) throws NumberFormatException,
            IOException {
        int  i, j;
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                System.in));
        j = Integer.parseInt(reader.readLine());

        while (j-- > 0) {
            integerArray[Integer.parseInt(reader.readLine())]++;
        }

        for (i = 0; i < 1000001; i++) {
            while (integerArray[i]-- > 0) {
                System.out.println(i);
            }

        }
    }
}

最佳答案

不要使用System.out.println而是使用一些更聪明的方式来编写输出(BufferedWriter?)。您的排序代码很好,因此瓶颈应该是I/O(这通常是Java在编程竞赛中遇到的问题)。

10-08 13:04