C++ C++;比较不同排序算法的运行时的函数

C++ C++;比较不同排序算法的运行时的函数,c++,function,sorting,vector,time,C++,Function,Sorting,Vector,Time,您好,我正在做的项目,我有不同的排序算法(快速排序,泡泡排序等)。 我测量每一个的时间,最后我需要比较哪一个最快,以此类推 bool testyBubblesort(){ long int before = GetTickCount(); a.BubbleSort_int(); long int after = GetTickCount(); double dif = double((after - before)); result &= testEqual

您好,我正在做的项目,我有不同的排序算法(快速排序,泡泡排序等)。 我测量每一个的时间,最后我需要比较哪一个最快,以此类推

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;
}
这是我的函数,它测试数组是否排序并测量时间。重要的部分是比较(dif)这应该是比较各种类型的函数。请注意,我也在其他种类中使用此函数

void comparison(double time){
    vector<int> all_times;
    all_times.push_back(time);
}
无效比较(双倍时间){
矢量所有时间;
所有时间。向后推(时间);
}
所以我在想做向量数组,然后排序这是个好主意,但我不知道我怎么总是会得到一些错误。 你能帮我吗?
谢谢,因为向量只有一个元素,所以您没有与任何东西进行比较

您应该将“比较”替换为只插入到全局声明的向量中。然后,在顶层(where调用testyBubblesort),在那里执行比较


更可靠的方法是创建一个向量,其中MyStruct被声明为double和字符串,以便存储{time,“Bubble Sort”}(允许您将运行时与所使用的排序算法相关联。然后在顶层,只需使用内置的排序函数(您必须使用接受函数的版本来定义如何订购MyStruct)在向量上,从向量中抓取第一个对象。然后打印出字符串。

什么错误?请注意,每次调用
比较时,您都在重新创建一个新的向量
:错误很可能与此相关。我和Stefano在一起,这看起来像是最严重的违规者。此外,您还及时发送了a
double
,为什么向量是
int
?是的,这里可能有问题。但是我如何将所有时间保存在某个地方,并将其与某个函数进行比较?@user3287392测试不同算法性能的最简单、最可靠的方法是使用探查器(例如,请参阅)。所有_时间不应为局部变量。也不应为整数向量。