您的位置:首页 > 其它

快速排序不同输入规模时间复杂度分析

2011-06-17 00:14 537 查看
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 = 0L;
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

注:不同机器以及同一机器在不同时刻得到时间都是有差别的

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  random import string class
相关文章推荐