作者sing10407 (阿U)
看板java
标题[J2SE] 测试quickSort
时间Sun Mar 11 12:23:02 2012
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