我需要制作一个程序,使用2种不同的算法对矢量进行分类:Quick(O(NlogN))和Bubble(O(N²))。此外,我需要计算每个算法的“延迟时间”。由于用户可以选择方法,我的程序具有以下代码:
switch(answer[1]){
case 'L':
start_t = clock()/ (double)CLOCKS_PER_SEC;
Log(Tab, NReg-1, answer[0]);
end_t = clock()/ (double)CLOCKS_PER_SEC;
break;
case 'Q':
start_t = clock()/ (double)CLOCKS_PER_SEC;
Quad(Tab, NReg-1, answer[0]);
end_t = clock()/ (double)CLOCKS_PER_SEC;
break;
}
total_t = (double)(end_t - start_t) ;
printf("Time: %f\n", total_t );
Log是调用我的快速排序算法和Quad,Bubble Sort。
的函数但是,当我运行我的程序并选择我想要应用的方法时,我在log方法上的时间比二次方法要大。这里是一个时间的例子,第二个是具有1000个元素的表:
二次方:0.0059300
对数:0.0340000
使用包含更多元素的表格可以注意到更大的差异。 好吧,我们可以认为我的对数方法效率不高。但是让我们看看当我删除代码的前一部分时会发生什么,并且不给用户选择方法的选项(也就是说,我将使用这两种方法对表进行分类):
对数:0.5810000
二次方:1,0680000
好吧,我不知道发生了什么,我不知道是什么原因造成的。
提供有关我的程序的更多信息:它读取带有元素列表的archieve,并根据用户所需的方法(和字段)对其进行分类。这些算法运行得很好,对我来说似乎没什么问题。
如果需要更多信息,我很乐意给予。
提前感谢您的帮助!