「java全排列输出」java输出数组所有排列组合
今天给各位分享java全排列输出的知识,其中也会对java输出数组所有排列组合进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
JAVA 全排列算法
递归实现,取数字(字符串)中第i个位置的字符,然后将他和剩余的字符拼接,剩余的字符串当成有一个全排列的输入,这样递归下去,只剩一个字符时全排列就是本身。程序中使用set去除了重复的数据,如果需要保留,将set换为list接口即可。
package mytest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/*
* @date:2012-2-8
* @author:
*
* 输入一个数字,讲输出 1到这个数字的全排列
*/
public class MyDemo2 {
private static SetString SET_STRING = new HashSetString();
private static SetLong SET_NUM = new HashSetLong();
public static void main(String[] args) {
System.out.println("begin ...... ");
testLong(234);
testString("a23");
print(SET_NUM);
print(SET_STRING);
System.out.println("end ...... ");
}
/**
* 测试数字
* @param num
*/
private static void testLong(long num){
long testNum = num;
String[] permutation;
for(long l=0; l=testNum; l++){
permutation = getAllOrder(String.valueOf(l));
for (int i = 0; i permutation.length; i++) {
SET_NUM.add(Long.valueOf(permutation[i]));
}
}
}
/**
* 测试字符串
* @param str
*/
private static void testString(String str){
String[] permutation = getAllOrder(str);
for (int i = 0; i permutation.length; i++) {
SET_STRING.add(permutation[i]);
}
}
private static void print(Set set){
System.out.println("/*****************************************************/");
int i=0;
for(Iterator it = set.iterator(); it.hasNext();){
i++;
if(i%10 == 0){
System.out.println();
}
System.out.print(it.next() + " ");
}
System.out.println();
System.out.println("/*****************************************************/");
}
/**
* 递归算法 全排列 去除重复
* @param str
* @return
*/
private static String[] getAllOrder(String str) {
String [] arrResult = null;
SetString set = new HashSetString();
if(str.length()1){
String result = "";
String charXInString;
String remainString;
for (int i = 0; i str.length(); i++) {
charXInString = str.charAt(i) + "";
remainString = str.substring(0, i)+ str.substring(i + 1, str.length());
for (String element : getAllOrder(remainString)) {
result = charXInString + element;
set.add(result);
}
}
arrResult = set.toArray(new String[set.size()]);
}else{
arrResult = new String[]{str};
}
return arrResult;
}
}
java怎么排列出一组数字所有排列方式
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
int arr[] = { 1, 2, 3 };
for (int i = 0; i 3; i++)
System.out.print(arr[i]);
System.out.println();
// 开始循环调用字典序算法,直至全排列排列完毕
// 返回false代表排列完毕,返回true代表仍有未排列完的数
while (fullSort(arr, 3));
}
final static boolean fullSort(int arr[], int n) {
int i = 0, j = 0, k = -1, l, temp;
for (i = 0; i n - 1; i++) { // 找最后的升序的位置
if (arr[i] arr[i + 1])
k = i;
}
if (k = 0) {
l = -1;
for (i = 0; i n; i++) { // 找到最后一个升序且是最大的数的下标
if (arr[k] arr[i])
l = i;
}
temp = arr[k];
arr[k] = arr[l];
arr[l] = temp;
for (i = k + 1; i n; i++)// 将k+1的元素与末尾对调
{
j = n - i + k;
if (i = j)
break;
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
if (k == -1)
return false;
for (i = 0; i n; i++)
System.out.print(arr[i]);
System.out.println();
return true;
}
java 定义了5个数字的数组,显示输出所有的排列组合
import java.util.ArrayList;
import java.util.List;
public class PermAComb {
static Listint[] allSorts = new ArrayListint[]();
public static void permutation(int[] nums, int start, int end) {
if (start == end) { // 当只要求对数组中一个数字进行全排列时,只要就按该数组输出即可
int[] newNums = new int[nums.length]; // 为新的排列创建一个数组容器
for (int i=0; i=end; i++) {
newNums[i] = nums[i];
}
allSorts.add(newNums); // 将新的排列组合存放起来
} else {
for (int i=start; i=end; i++) {
int temp = nums
今天给各位分享java全排列输出的知识,其中也会对java输出数组所有排列组合进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
; // 交换数组第一个元素与后续的元素nums
今天给各位分享java全排列输出的知识,其中也会对java输出数组所有排列组合进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
= nums[i];nums[i] = temp;
permutation(nums, start + 1, end); // 后续元素递归全排列
nums[i] = nums
今天给各位分享java全排列输出的知识,其中也会对java输出数组所有排列组合进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
; // 将交换后的数组还原nums
今天给各位分享java全排列输出的知识,其中也会对java输出数组所有排列组合进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
= temp;}
}
}
public static void main(String[] args) {
int[] numArray = {1, 2, 3, 4, 5, 6};
permutation(numArray, 0, numArray.length - 1);
int[][] a = new int[allSorts.size()][]; // 你要的二维数组a
allSorts.toArray(a);
// 打印验证
for (int i=0; ia.length; i++) {
int[] nums = a[i];
for (int j=0; jnums.length; j++) {
System.out.print(nums[j]);
}
System.out.println();
}
System.out.println(a.length);
}
}
采纳吧
关于java全排列输出和java输出数组所有排列组合的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。