排列生成算法java_归纳法-生成全排列算法Java实现

本文介绍了如何使用归纳法生成1到n的全排列。通过递归算法,每次将第j个元素与当前集合的第一个元素交换,然后生成剩余元素的全排列,最终得到所有可能的排列组合。算法分析表明,该方法执行时间与全排列的数量相关。
摘要由CSDN通过智能技术生成

全排列问题

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。《算法设计与技巧分析》这本书中,使用归纳法生成一组数【1,2,3……n】的所有排列问题,并用数组P[1……n]来存放每一个排列。该归纳法基于这样一个假设:可以生成n-1个数的所有排列,那么就可以扩展方法,生成1,2,……n这n个数的全排列。

全排列生成方法

生成2,3,……n,这n-1个数的所有排列,再在这些所有排列前面加上第N个数1;接下来生成1,3,4……n这n-1个数的排列,然后再在每个排列前面加上第N个数2,依次类推,直到生成1,2,3……n-1这n-1个数的所有排列,并且在每个排列前面加上第N个数n,那么这所有的排列就构成了1,2,……n这个N个数所有的排列结果集了。

这一过程可以描述为,设一集合变量p = {r1, r2, r3, ... ,rn}, 全排列为permute(p),定义一个集合变量pn,pn=p-{rn},即pn是集合p移除某个元素rn后的集合。那么r1permute(p1)就是集合[r2,r3,……rn]这n-1个数的排列的,然后每个排列之前在加上第N个元素r1得到的排列。

归纳公式

求p=【1,2,3……n】的全排列的算法,可以归纳得到计算公式为:permute(p)=1.permute(p1)+2.permute(p2)+3.permute(p3)……n.permute(pn),也就是直接对于序列1,2,3……n

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值