Java实现数组全排序(递归)
来源:互联网 发布:php高并发秒杀 实例 编辑:程序博客网 时间:2024/05/01 03:28
import org.junit.Test; /** * 全排序思路:假设有n个数需要进行全排列,我们可以把每个数都放到第一个位置,然后剩下的n-1个数进行全排列。 * 即有n*(n-1)!种可能性,与n个数进行全排列的n!次可能性一致 * 利用递归的方式,依此类推当剩下的数个数为1时,为一次排列,输出该排列。 * 所以递归函数可以如下permutation所示: * @author YH * */public class AllSort { public void permutation(char[] buf, int start, int end) { if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可 for (int i = 0; i <= end; i++) { System.out.print(buf[i]); } System.out.println(); } else {// 多个字母全排列 for (int i = start; i <= end; i++) { char temp = buf[start];// 交换数组第一个元素与后续的元素 buf[start] = buf[i]; buf[i] = temp; permutation(buf, start + 1, end);// 后续元素递归全排列 temp = buf[start];// 将交换后的数组还原 buf[start] = buf[i]; buf[i] = temp; } } } @Test public void testPermutation() throws Exception { char[] buf = new char[] { 'a', 'b', 'c' }; permutation(buf, 0, 2); } }
运行测试,输出结果:
abc
acb
bac
bca
cba
cab
1 0
- Java实现数组全排序(递归)
- Java全排序算法(递归实现)
- java 递归实现全排序
- 全排序(递归+非递归实现)
- 数组全排列---递归方法实现(java)
- Java 数组全排列 递归实现
- 全排序的递归实现(123)
- 一些常用算法[数组全排列算法,单链表反转(递归实现),字符串反转,桶排序]
- 递归实现数组全排列
- 数组全排列递归实现
- Java用递归实现的数组的全排列
- java 递归全排列 (数组,容器两种实现)
- 递归实现全排列(java版)
- C++库函数next_permutation的递归实现(数组全排列)
- 递归实现数组的排序
- 快速排序 数组+递归实现
- 递归实现逆转数组(Java实现)
- java 全排列 递归实现
- 背包问题
- qq聊天界面,等我研究明白怎么附加文件夹到。。
- Android自定义控件之自定义属性解析
- poj3070Fibonacci
- cc.DrawNode
- Java实现数组全排序(递归)
- ListView隐藏右侧滚动条
- 设计模式解析之代理模式
- C++递归算法:我的理解
- parallels deskop for mac
- HTML中的<label>标签
- LeetCode 132. Palindrome Partitioning II (C++)
- Java基本数据类型
- RxJava 方法备忘录