首页 > 代码库 > 关于8皇后3种算法时间复杂度的实际比较

关于8皇后3种算法时间复杂度的实际比较

隐隐的感觉到一些不对,我尝试添加对can_put函数做一个统计。理论上将,can_put函数的执行次数就是O(T)

CNT: 352, times: 72378

real    0m0.008s
user    0m0.004s
sys    0m0.000s

CNT: 352, times: 1222703298

real    0m18.207s
user    0m18.193s
sys    0m0.004s

CNT: 352, times: 459314

real    0m0.022s
user    0m0.016s
sys    0m0.000s

第一种是递归,除了耗栈,应该是足够的经济实惠

第二种是遍历,空间上很经济,时间上没有做任何考虑,是O(n^n)的,也就是最糟糕的

第三种是优化过的遍历,增加了剪枝(大概这个说法?),大幅度提高了效率,但是和递归相比,还是很糟糕,不知道是算法出了问题,还是为栈空间付出的代价?

 

等我干完手头的活儿,休息时拿出来玩玩看,总觉得第三钟算法不该这么费时间,哪里写错了吧。

 

关于8皇后3种算法时间复杂度的实际比较