马踏棋盘里面的一些小问题

我在一篇文章里面曾经谈到过马踏棋盘的问题,http://www.cnblogs.com/dabenhou/p/6605057.html,当时在代码编写完成之后确实可以实现并成功输出,但是我又一次在记事本里编写好之后,在控制台输出却发现程序陷入了无限循环,但是编译可以通过,然后本人仔细的查找bug,最后通过对当前代码与之前的正确代码之间进行分区域替换,一步一步替换下去之后发现是在创建Point[] 之时出了问题,我的正确代码的数组创建是这样的:

Point[] next = { 
        new Point(-1, -2), 
        new Point(-1, 2), 
        new Point(-2, -1),
        new Point(-2, 1), 
        new Point(1, -2), 
        new Point(1, 2),
        new Point(2, -1), 
        new Point(2, 1) };

而之后的代码是这样的:

Point[] next = { 
        new Point(-1, -2), 
        new Point(-1, 2), 
        new Point(-2, -1),
        new Point(-2, 1), 
        new Point(1, -2), 
        new Point(1, 2),
        new Point(2, 1), 
        new Point(2, -1) };

结果仍然可以运行出来,但是两段代码分别花费的时间却是天壤之别,上一个是不到一秒几乎是马上就显示打印出来,而下一个却是接近有10秒中,请问这是什么情况?是先后顺序导致时间复杂度的不一致吗?请大神指点一二,不胜感激!本人的邮箱:zhaoheng2017@126.com

原文地址:https://www.cnblogs.com/dabenhou/p/6605145.html