前面我们介绍了全排列的非递归算法,现在我再来写一下全排列的递归算法: 这两种算法的算法思路并不相同。递归算法的思路比较接近于我们现实生活中的思路。 1.试想,我们只有两个数字:12.要对它进行全排列,第一种方式就是12本身,第二种,将12交换,变为21即可。这提示了我们一种交换的思路。 2.但这概括的并不全面。试想,我们要对123进行全排列。我们可以采用将1固定,“23”进行全排列,将“2”固定,对“13”进行全排列。将“3”固定,对“12”进行全排列。 这其实就是首部为”1“,然后是“2”,然后是“3”,不就是第…

2012年6月14日 0条评论 4点热度 阅读全文

学习软件工程专业快两年了,但是发现基础的算法写起来依旧很吃力。痛彻心扉,决定一个一个补上。。今天先来研究一下全排列的非递归算法: 先大体介绍一下算法思路: 比如说有1234四个数字,我们要将这四个数字实现全排列。抛弃初中老师教我们的4×3×2×1的思路,我们来换一种思路。“1234”当然是第额一个排列,第二个排列,我们选取刚好比它大的,我们用大脑当然想的到是“1243”,但是我们怎样解释给机器听呢?我们可以这样解释: 1.从后往前寻找,即沿着4->3->2->1的方向寻找,直到找到某一个数,它比后…

2012年6月13日 0条评论 3点热度 阅读全文