2010-11-18 35 views
1

IS在那裏RandomizedQuickSort java API中的方法?或者我們應該自己編寫它的代碼? 謝謝用於數組的RandomizedQuickSort方法

+1

你知道你可以看到源的所有程序在Java標準庫中src.zip在JDK的下載? – 2010-11-18 17:20:31

+0

你能解釋一下你的方式嗎?我是初學java,謝謝 – user472221 2010-11-18 17:58:09

+0

如果你是初學者,我建議你先試試Arrays.sort()來檢查它是否不符合你的需求。 – 2010-11-18 18:24:09

回答

1

除非你知道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.