【发布时间】:2014-03-06 00:40:13
【问题描述】:
您好,我正在做的项目有不同的排序算法(QuickSort、BubbleSort 等)。 我测量了他们每个人的时间,最后我需要比较哪个是最快的,等等。
bool testyBubblesort(){
long int before = GetTickCount();
a.BubbleSort_int();
long int after = GetTickCount();
double dif = double((after - before));
result &= testEqual(zoradane.vypis_pola(), a.vypis_pola(),dif, "Test sort array-int");
comparison(dif);
vypisVysledkuTestu(result, "Testy triedenia BubbleSortom");
return result;
}
这是我的函数,它测试数组是否排序并测量时间。重要的部分是 comparison(dif); 这应该是比较各种类型的函数。请注意,我也在其他方面使用此功能。
void comparison(double time){
vector<int> all_times;
all_times.push_back(time);
}
所以我在考虑制作矢量数组然后对其进行排序是个好主意,但我不知道我是如何总是得到一些错误的。 你能帮我吗 ? 谢谢
【问题讨论】:
-
什么错误?请注意,您在每次调用
comparision时都会重新创建一个新向量all_times:错误很可能与此有关。 -
我和 Stefano 在一起,这看起来是最严重的违规者。另外,你是作为
double及时发送的,为什么你把那个向量作为int? -
是的,这里可能有问题。但是我怎样才能在某个地方保存所有时间并将其与某些功能进行比较?
-
@user3287392 测试不同算法性能的最简单、最可靠的方法是使用分析器(参见例如'What can I use to profile C++ code in Linux?'、shinyprofiler)。
-
all_times 不应是局部变量。它也不应该是整数向量。
标签: c++ function sorting vector time