2012年(106)
分类: C/C++
2012-05-08 17:23:32
全排列运行时间
总结:
这次测试了三组数据,分别是N=8,N=9,N=10
N=8时结果和上次稍有不同,可能是输入数字1-8花费的时间有差异所造成的。
N=8:用栈(59.218s)>递归实现(44.031s)>字典序排序(23.684s)>next_permutation(20.531s)
N=9:用栈(276秒=4.6分钟)>递归法(142.187秒=2.369783分钟)>字典序(94.895秒=1.581583分)>next permutation.(85.976秒=1.4329分)
N=10:递归法(0.579056小时)>用栈(0.529878小时)>字典序(0.38615小时)>nextpermutation.(0.189781小时)
N为10,这次用栈方法和递归法的时间虽然差的不太多,但和N=8时得出的结果是相反的。我觉得大概这两种算法的时空效率是大体一致的。由于N=11时时间就花费很长了,我每次电脑都来不及等程序结束就要关机了,所以更精确更具体的数据并没有测试出来,以后再想有什么更好的方法。