算法学习笔记7-非递归方法写一个全排列
来源:互联网 发布:sql中exists的用法 编辑:程序博客网 时间:2024/06/06 07:27
非递归全排列
不用递归,只能用循环,在循环里对数组进行排序,每次交换两个元素的位置,直到数组是降序有序排列的。但是需要先对数组进行升序排序,才能输出所有全排列。
#coding=utf-8def myreverse(a,i,j): while True: if i>=j: break a[i],a[j]=a[j],a[i] i+=1 j-=1def out(a,n): for i in range(n-1): print a[i], print a[n-1]def permutation(a,n): if n<2: return while True: out(a,n) i=n-2; while i>=0: if a[i]<a[i+1]: break#从倒数第二个数往前遍历,寻找比后面的数小的数 elif i==0: return i-=1 j=n-1 while j>i: if a[j]>a[i]: break#从倒数第一个数往前遍历,寻找比上面找到的数大的数 j-=1 a[i],a[j]=a[j],a[i]#交换找到的这两个数 myreverse(a,i+1,n-1)#将第i个数后面的数倒置n=input()a=list(raw_input().split())a=[int(i) for i in a]permutation(a,n)
阅读全文
0 0
- 算法学习笔记7-非递归方法写一个全排列
- 算法学习笔记5-递归方法写一个全排列
- 全排列非递归算法
- 算法笔记之 全排列的 非递归求解
- 递归全排列学习笔记
- 非递归全排列算法 c++
- 全排列的非递归算法
- 全排列的非递归算法
- 全排列生成算法(非递归)
- 组合与全排列非递归算法
- 全排列算法之非递归实现
- 全排列算法的非递归实现
- C++使用递归的方法生成全排列(《数据结构与算法》,学习笔记)
- 非递归全排列
- 全排列非递归
- 非递归全排列
- 全排列非递归
- 全排列 递归方法与非递归方法实现
- codeforces 832A Sasha and Sticks
- 2017 Multi-University Training Contest
- 树莓派调用科大讯飞接口声音小的问题
- php中文字符字符串反转字符串
- Machine Learning in action --AdaBoost(已勘误)
- 算法学习笔记7-非递归方法写一个全排列
- Ubuntu常用指令(持续添加更新)
- SourceTree提交修改用户
- 《数据之巅》读后感
- (人脸识别2-6)——利用keras训练识别模型
- 贪心算法之均分纸牌
- gulp全局依赖包下载之坑
- socket編程-select學習
- poi处理单元格不同类型的取值,升级版!