[J2SE] 測試quickSort

看板java作者 (阿U)時間13年前 (2012/03/11 12:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
import java.lang.Math; public class QSort{ public static void main(String[] args){ int[] data=new int[10000]; for(int i=0;i<data.length;i++){ data[i]=i;//一萬筆已排好的資料 } //計算Sort秒數 double start,stop; start = System.currentTimeMillis(); quickSort(data,0,data.length-1); stop = System.currentTimeMillis(); System.out.println("quick sort use "+(stop-start)/1000+"sec"); } public static void quickSort(int[] data,int l,int r){ int i, j, tmp, v; if (r > l) { v = data[l];//l=left,r=right,v=標竿 i = l;//i和j則是移動與交換的點 j = r + 1; for (;;) { while (i<r && data[++i] < v) ; // 假設data[r+1]一定 >= v while (data[--j] > v) ; // data[l] 一定 == v if (i >= j) break; tmp = data[i]; data[i] = data[j]; data[j] = tmp; } // data[j] <= v tmp = data[j]; data[j] = data[l]; data[l] = tmp; quickSort(data, l, j-1); quickSort(data, j+1, r); } } } 這是測試Sort的作業的其中一個sort,quick sort, 測試的是對於一個已排好的陣列去做sort的速度, 1000筆的資料還跑得出來,但是到了10000筆後,則出現錯誤訊息, at QSort.quickSort(Qsort.java:35) . . . (都一樣的錯誤訊息) 因為太多筆資料也不知道最上層的錯誤訊息是什麼 但是如果是亂數排列可以跑 懇請各位大大幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.18.101
文章代碼(AID): #1FN2YiYx (java)
文章代碼(AID): #1FN2YiYx (java)