生成1~n 的排序!!!
来源:互联网 发布:mac怎么设置开机密码 编辑:程序博客网 时间:2024/06/06 03:04
问题描述 :
输入一个数字n,按照字典序大小顺序输出前n个数的所有排序。
例如 :3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
首先我想有感而发,通过这个题我又进一步的了解了递归的伟大。
解题思路 :
如果是第一次做这样的题,我可真是毫无头绪,根本没有想过会使用递归这样的算法,每一次的遍历,每一次的
递归实在是让我感到递归算法的有趣之处。
首先按照我理解的思想,他的样子就像是一个树型递归,什么是树型递归,其实这个名字是我给他起的,
如果我输入一个数字n,代表这这个排序(1~n) 的,前n个数字都在变化位置,最后排好位置之后就进行输出,
如果相成一个树,在树根的时候,第一个位置到最后一个位置什么数字都不放,这个根节点在分出n个叶节点,
每一个叶节点第一个位置依次放入(1~n)之间的数字,就相当于任何数字都在第一个位置上排过序,之后是之拥有
第一个位置数字的节点分出他的叶节点,这回的叶节点就是n-1个,为什么是n-1个呢?由于你在排序的位置中已经
占有了一个位置,所以你剩下了n-1 个数字放入这个排序的第二个位置,依次下去,直到最后这个排序中全部排完
就可以把他们依次的输出了,这样整个排序都会出现在屏幕上,但是这样你有没有想过,第一次有n个节点,这n个
节点中的每一个节点有可以分出n-1个节点,之后每一个n-1个节点中的每一个节点又会分出n-2个节点,这样的空间
实在是太庞大了,使用递归的话,会浪费大量的空间的,但是这样的方法还是会完美的解出这个题的。。。。。。
0 0
- 生成1~n 的排序!!!
- 生成1~n的排列
- 生成1~n的排列
- 生成1-n的排列
- 生成1-n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列
- 生成1~n的排列
- 1到n的排序
- 按照字典排序,生成1-n队列(java实现)
- 生成1-N*N的矩阵,一圈一圈的
- 生成1-n的全排列组合
- 暴力法生成1~n的排列
- 生成1~~n的排列 && 子集
- 生成1~n的全排列
- 算法--生成1~n的排列
- Bitmap加载于imageView的一些坑
- Win8系统如何使用承载网络方式共享无线实现手机上网
- 计蒜客 挑战难题 第10题:寻找插入位置
- NOIP 2011 选择客栈
- MessageBox()函数
- 生成1~n 的排序!!!
- 计蒜客 挑战难题 第11题:移除数组中的重复元素
- python scipy.optimize curve_fit 多高斯拟合
- 说说UI设计
- oracle 字符型日期往sqlserver2005日期类型字段转换
- 撞谞诅嘴综纵昨锥捉捉拙桩卓缀自准籽柞
- 计蒜客 挑战难题 第12题:最后一个单词的长度
- 浊赚爪鬃宗浊棕嘴孜酌拙追尊诅罪总组卒
- Android-1-电话拨号器