全排列算法(字典排序法)1
来源:互联网 发布:淘宝达人的名字大全集 编辑:程序博客网 时间:2024/06/02 05:14
1.字典排序算法
原理:数组1,2,3 将大的值向前移动,小的值向后移动成 3,2,1 排列结束
有结束标识
方法1:排列下标法,不需要执行排列前手动字典排序
static void pailie(char[] a, int count){ int i, j, temp; //初始化下标队列 int[] p = new int[a.Length]; for (i = 0; i < p.Length; i++) { p[i] = i; } while (true) { //输出显示结果 StringBuilder builder = new StringBuilder(50); for (int k = 0; k < a.Length; k++) builder.Append(a[p[k]]); Console.WriteLine(builder.ToString()); //从后向前查找,看有没有后面的数待遇前面的数的情况,若有则暂停在后一个数的位置 for (i = count - 1; i > 0 && p[i] < p[i - 1]; i--) ; //若没有后面的数大于前面的数的情况,说明已经到了最后一个排列,返回 if (i == 0) break; //从后查看到i,查找大于p[i-1] 的最小值,记录j for (j = count - 1; j > i && p[j] < p[i - 1]; j--) ; //交换 p[i-1]和 p[j] temp = p[i - 1]; p[i - 1] = p[j]; p[j] = temp; //倒置 a[i]到a[n-1] for (i = i, j = count - 1; i < j; i++, j--) { temp = p[i]; p[i] = p[j]; p[j] = temp; } }}方法2:排列内容法,排列前需要手动字典排序
static void pailie(char[] a, int count){ int i, j; while (true) { //输出显示结果 StringBuilder builder = new StringBuilder(50); for (int k = 0; k < a.Length; k++) builder.Append(a[k]); Console.WriteLine(builder.ToString()); //从后向前查找,看有没有后面的数待遇前面的数的情况,若有则暂停在后一个数的位置 for (i = count - 1; i > 0 && a[i] < a[i - 1]; i--) ; //若没有后面的数大于前面的数的情况,说明已经到了最后一个排列,返回 if (i == 0) break; //从后查看到i,查找大于a[i-1] 的最小值,记录j for (j = count - 1; j > i && a[j] < a[i - 1]; j--) ; //交换 a[i-1]和 a[j] swap(a, i - 1, j); //倒置 a[i]到a[n-1] for (i = i, j = count - 1; i < j; i++, j--) { swap(a, i, j); } }}static void swap(char[] source, int i, int j){ char temp = source[i]; source[i] = source[j]; source[j] = temp;}
0 0
- 全排列算法(字典排序法)1
- 全排列生成算法之一——字典排序算法
- 全排列算法 -- 字典序法(去重)
- 全排列算法之字典序法
- 字典序法生成全排列算法
- 字典序法算法(全排列, Java)
- 全排列字典排序解决
- 字典序全排列算法
- 全排列算法的字典序排列
- 全排列(1) ----字典序
- 实现全排列的两种算法:字典序列法以及递归算法(java)
- 算法02:全排列字典序算法
- 全排列的生成算法 字典序法
- 字典序法生成全排列算法的证明
- 字典序法生成全排列算法的证明
- 全排列的生成算法:字典序法
- 字典序法生成全排列算法的证明
- 全排列的生成算法:字典序法
- Swing【java】
- IRQL APC_LEVEL and APC
- Mongodb 操作
- VS2005 Win32 dll 只生产dll,不生成lib
- 小巴孩,如果有一天
- 全排列算法(字典排序法)1
- angularjs自定义directive指令的priority、terminal参数说明
- git.oschina.net 上的框架
- Rotate picture with caption 把Latex中图片和标题一起旋转
- 用IIS配置反向代理
- webview
- POJ 1050. To the Max
- android 实现定时任务的几种方式
- [Android]我的安卓5.0+设计开发规范(基于Material Design)