全排列——递归排序和字典序列

时间:2012-11-02 08:22:54
【文件属性】:

文件名称:全排列——递归排序和字典序列

文件大小:7KB

文件格式:TXT

更新时间:2012-11-02 08:22:54

递归排序 字典序列 字典树 算法

全排列算法有两个比较常见的实现:递归排列和字典序排列。 (1)递归实现 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典序排列 把升序的排列(当然,也可以实现为降序)作为当前排列开始,然后依次计算当前排列的下一个字典序排列。对当前排列从后向前扫描,找到一对为升序的相邻元素,记为i和j(i < j)。如果不存在这样一对为升序的相邻元素,则所有排列均已找到,算法结束;否则,重新对当前排列从后向前扫描,找到第一个大于i的元素k,交换i和k,然后对从j开始到结束的子序列反转,则此时得到的新排列就为下一个字典序排列。这种方式实现得到的所有排列是按字典序有序的,这也是C++ STL算法next_permutation的思想


网友评论

  • 谢谢,学习了
  • 还好吧、面试的时候遇到递归排序、就下了这个看看