我试图解决经典的计数排序问题。
我的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在编程竞赛中遇到的问题)。