「java全排列输出」java输出数组所有排列组合

博主:adminadmin 2022-11-26 18:34:06 40

今天给各位分享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输出数组所有排列组合的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。