給定數字列表,您將按照非遞減的 順序對它們進行排序。輸入CodeChef TurboSort(使用int對整數進行排序)
t - 列表中的數字的數量,然後t行遵循[t < = 10^6]。 每行包含一個整數:N [0 < = N < = 10^6]輸出
以非遞減順序輸出給定的數字。實施例
輸入:5 5 3 6 7 1輸出:1 3 5 6 7
使用文字INT值,並使用該排序使用快速排序的文字的Arrays.sort()函數首先執行ALGO(最壞的情況下N^2,平均情況 - nlogn)
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
InputReader in = new InputReader(inputStream);
PrintWriter out = new PrintWriter(outputStream);
int num = in.nextInt();
int[] n = new int[num];
for (int i = 0; i < n.length; i++) {
n[i] = in.nextInt();
}
Arrays.sort(n);
for (int i = 0; i < n.length; i++) out.println(n[i]);
out.close();
}
}
class InputReader {
private BufferedReader reader;
private StringTokenizer tokenizer;
public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream));
tokenizer = null;
}
public String next() {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
}
public int nextInt() {
return Integer.parseInt(next());
}
}
下實現存儲和排序中的int文字作爲整型對象,並使用Arrays.sort()甲基OD,現在排序使用歸併ALGO,保證nlogn性能
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
import java.io.InputStream;
/* Name of the class has to be "Main" only if the class is public. */
class Codechef {
public static void main(String[] args) {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
InputReader in = new InputReader(inputStream);
PrintWriter out = new PrintWriter(outputStream);
int T = in.nextInt();
Integer[] ARR = new Integer[T];
for (int i = 0; i < T; i++) ARR[i] = in.nextInt();
Arrays.sort(ARR);
for (int i : ARR) out.println(i);
out.close();
}
}
class InputReader {
private BufferedReader reader;
private StringTokenizer tokenizer;
public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream));
tokenizer = null;
}
public String next() {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
}
public int nextInt() {
return Integer.parseInt(next());
}
}
然而現在的問題是,按照邏輯,歸併ALGO(即,整數對象排序實現)應該採取小於或等於時間的整數對象與IE瀏覽器中的int文字排序實現對於快速排序算法中)正在採取較小的時間...
Integer對象分類實施 - 0.94sec INT文字排序執行 - 0.53sec
我錯過了什麼嗎? 這個多餘的時間是什麼原因? 是不是因爲自動裝箱和autounboxing的?!是這個剩餘時間的原因...
順便說一句,你知道你的元素是整數且<10^6,你可以用線性複雜度對其進行排序。 –
可能是因爲你沒有測量你認爲你正在測量的東西。您可能正在測量HotSpot編譯時間,JVM啓動時間,磁盤吞吐量等。請先閱讀本文,然後發佈新的基準測試結果:http://stackoverflow.com/questions/504103/how-do-i-write -a-correct-micro-benchmark-in-java –