Java中一组数据的排列

问题描述 投票:0回答:1

我一组中有10,000个物品,每个物品都必须制成三合会。我需要一种算法来有效地找到每个三合会。

例如:

{A,B,C,D,...}

1.AAA2个3,瑞声4号...

一直到ZZY,ZZZ。

我使用的方法效率很低,我创建了一个嵌套的forloop 3,该forloop遍历一个数组,该数组的运行时间为O(N ^ 3),性能明显很差。哪种算法和数据结构会更好呢?谢谢

java algorithm permutation
1个回答
0
投票

用于从一组n个字符中打印K长度的所有排列的功能,重复字符:

static void printKLengthPerm(char[] set, String prefix, int n, int k) 
{ 
    if (k == 0) 
    { 
        System.out.println(prefix); 
        return; 
    } 

    for (int i = 0; i < n; i++) 
    { 
        String newPrefix = prefix + set[i]; 
        printKLengthPerm(set, newPrefix, n, k - 1); 
    } 
}

调用该函数从一组所有大写英文字母打印3个长度的所有排列:

char[] set = new char[26]; 
for(int i = 0; i < 26; i++)
  set[i] = (char)(i+65);
int n = set.length; 
printKLengthPerm(set, "", n, 3); 
© www.soinside.com 2019 - 2024. All rights reserved.