算法时间的区别 - 对表进行分类

时间:2013-11-17 13:52:25

标签: c algorithm

我需要制作一个程序,使用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,并根据用户所需的方法(和字段)对其进行分类。这些算法运行得很好,对我来说似乎没什么问题。

如果需要更多信息,我很乐意给予。

提前感谢您的帮助!

0 个答案:

没有答案