【发布时间】:2016-06-02 16:06:56
【问题描述】:
我需要时间
- 1000
- 5000
- 10000
- 15000
- 20000 等编号的数据。
通过使用 快速排序 算法从 No. 中验证 时间复杂度。的数据 与 时间 图表。但是对于 1000 数据和 20000 数据,我还有 0 秒 时间。如果我以 毫秒或纳秒 为单位测量时间,但时间仍然为零。有什么方法可以为不同的找到近似或比较时间。数据的?
我的快速排序流程在这里 -
#include <bits/stdc++.h>
using namespace std;
int A[50000], i, j, V, store;
int part(int left, int right, int P)
{
V = A[P];
swap(A[P], A[right]);
store = left;
for(i = left; i < right; i++)
{
if(A[i] <= V)
{
swap(A[i], A[store]);
store++;
}
}
swap(A[store], A[right]);
return store;
}
void qSort(int left, int right)
{
if(left < right)
{
j = part(left, right, left);
qSort(left, j-1);
qSort(j+1, right);
}
}
main()
{
int nData, k, minValue, maxValue;
cout<<"No. of Data: ";
cin>>nData;
cout<<"\nRange (min, max): ";
cin>>minValue>>maxValue;
for(k=0; k<nData; k++)
{
A[k] = minValue + (rand()%(int) (maxValue - minValue + 1));
}
clock_t t1 = clock();
qSort(0, nData-1);
clock_t t2 = clock();
cout<<"\n\nTime: "<<(double)(t2-t1)/CLOCKS_PER_SEC<<endl;
}
[注意:我的操作系统是 Windows]
【问题讨论】:
-
我不知道怎么做。您可以复制粘贴接受的答案,然后更改函数调用。您的另一个选项是多次运行该函数并取平均值,但它不太准确。
-
好的,我会试试的,James Root。谢谢你的建议。
-
如果您使用可变大小的容器而不是数组并用随机数据填充数据,您可以在命令行上设置大小,这样可以确保它不会被优化掉。也就是说,请将您的代码发布到codereview.stackexchange.com,您的代码将受益匪浅。
标签: c++ algorithm time time-complexity quicksort