1
IS在那裏RandomizedQuickSort
java API中的方法?或者我們應該自己編寫它的代碼? 謝謝用於數組的RandomizedQuickSort方法
IS在那裏RandomizedQuickSort
java API中的方法?或者我們應該自己編寫它的代碼? 謝謝用於數組的RandomizedQuickSort方法
除非你知道Arrays.sort()不適合你,否則我建議你使用它。否則,我建議你測試任何替代品都是一樣好。
我在@ org.life.java建議的源代碼中添加了以下內容,以及一個shuffle()/ sort()方法,該方法應該是隨機化的和快速排序的。
long runTimeNS = 2 * 1000 * 1000 * 1000L;
for (int i = 0; i < 3; i++) {
long start = System.nanoTime();
long r;
for (r = 1; r < runTimeNS; r++) {
Arrays.sort(list7.clone());
if (System.nanoTime() - start > runTimeNS) break;
}
long time = System.nanoTime() - start;
System.out.println("Average Arrays.sort() time " + time/r/1000 + " us.");
long start1 = System.nanoTime();
for (r = 1; r < runTimeNS; r++) {
List<Integer> list = new ArrayList<Integer>();
for (int j : list7) list.add(j);
Collections.shuffle(list);
Collections.sort(list);
int[] ints = new int[list.size()];
for (int j = 0; j < list.size(); j++) ints[j] = list.get(j);
if (System.nanoTime() - start1 > runTimeNS) break;
}
long time1 = System.nanoTime() - start1;
System.out.println("Average shuffle/sort time " + time1/r/1000 + " us.");
long start2 = System.nanoTime();
for (r = 1; r < runTimeNS; r++) {
qrsort(list7.clone());
if (System.nanoTime() - start2 > runTimeNS) break;
}
long time2 = System.nanoTime() - start2;
System.out.println("Average qrsort() time " + time2/r/1000 + " us.");
}
和它打印
Average Arrays.sort() time 477 us.
Average shuffle/sort time 5964 us.
Average qrsort() time 36155 us.
Average Arrays.sort() time 474 us.
Average shuffle/sort time 5894 us.
Average qrsort() time 35078 us.
Average Arrays.sort() time 480 us.
Average shuffle/sort time 6211 us.
Average qrsort() time 34790 us.
你知道你可以看到源的所有程序在Java標準庫中src.zip在JDK的下載? – 2010-11-18 17:20:31
你能解釋一下你的方式嗎?我是初學java,謝謝 – user472221 2010-11-18 17:58:09
如果你是初學者,我建議你先試試Arrays.sort()來檢查它是否不符合你的需求。 – 2010-11-18 18:24:09