摘要: (一)非递归全排列算法基本思想是: 1.找到所有排列中最小的一个排列P. 2.找到刚刚好比P大比其它都小的排列Q, 3.循环执行第二步,直到找到一个最大的排列,算法结束.下面用数学的方法描述:给定已知序列 P = A1A2A3An ( Ai!=Aj , (1<=i<=n , 1<=j<=n, i != j ) )找到P的一个最小排列Pmin = P1P2P3Pn 有 Pi > P(i-1) (1 < i <= n)从Pmin开始,总是目前得到的最大的排列为输入,得到下一个排列.方法为:1.从低位到高位(从后向前),找出“不符合趋势”的数字。即找到一个P 阅读全文
posted @ 2012-09-08 01:26 轻舞飞扬(Michael) 阅读(694) 评论(0) 推荐(0)
摘要: 全排列是一种时间复杂度为:O(n!)的算法,前两天给学生讲课,无意间想到这个问题,回来总结了一下,可以由7种算法求解,其中动态循环类似回溯算法,实现起来比较繁琐,故总结了6种,以飨读者。所有算法均使用JavaScript编写,可直接运行。算法一:交换(递归)<htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <tit 阅读全文
posted @ 2012-09-08 01:21 轻舞飞扬(Michael) 阅读(665) 评论(0) 推荐(0)