import java.util.Random;
public class QuickSort
{
public static void quickSort(int[] a, int low, int high)
{
int i, j;
int temp;
i = low;
j = high;
temp = a[low]; // 取第一个元素为标准数据元素
while(i < j)
{ // 在数组的右端扫描
while(i < j && temp <= a[j]) j--;
if(i < j)
{
a[i] = a[j];
i++;
} // 在数组的左端扫描
while(i < j && a[i] < temp) i++;
if(i < j)
{
a[j] = a[i];
j--;
}
}
a[i] = temp;
if(low < i) quickSort(a, low, i - 1); // 对左端子集合递归
if(i < high) quickSort(a, j + 1, high); // 对右端子集合递归
}
public static void main(String[] args)
{
long mid = 0 L;
int all = 100000;
for(int n = 1; n <= 10; n++)
{
int[] test = new int[n * 100];
Random rand = new Random(47);
for(int j = 0; j < all; j++)
{
for(int i = 0; i < n * 100; i++) test[i] = rand.nextInt(10000);
long startTime = System.nanoTime();
quickSort(test, 0, n * 100 - 1);
long endTime = System.nanoTime();
mid += endTime - startTime;
}
mid /= all;
System.out.println("" + n * 100 + ":" + mid);
}
}
}
结果(纳秒):
100:8348
200:16798
300:25641
400:35086
500:44519
600:54011
700:63657
800:73646
900:84248
1000:94609
注:不同机器以及同一机器在不同时刻得到时间都是有差别的