[J2SE] 測試quickSort
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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):