この質問が何度も聞かれることは知っていますが、長さ8の文字列のすべての順列を生成するための非常に高速なアルゴリズムを探しています。長さ8の文字列を生成しようとしています。ここで、文字列の各文字は任意です。 0〜9またはazの文字(合計36のオプション)。現在、これは私がしなければならないコードです:
for(idx[2] = 0; idx[2] < ch1.length; idx[2]++)
for(idx[3] = 0; idx[3] < ch1.length; idx[3]++)
for(idx[4] = 0; idx[4] < ch1.length; idx[4]++)
for(idx[5] = 0; idx[5] < ch1.length; idx[5]++)
for(idx[6] = 0; idx[6] < ch1.length; idx[6]++)
for(idx[7] = 0; idx[7] < ch1.length; idx[7]++)
for(idx[8] = 0; idx[8] < ch1.length; idx[8]++)
for(idx[9] = 0; idx[9] < ch1.length; idx[9]++)
String name = String.format("%c%c%c%c%c%c%c%c%c%c",ch1[idx[0]],ch2[idx[1]],ch3[idx[2]],ch4[idx[3]],ch5[idx[4]],ch6[idx[5]],ch7[idx[6]],ch8[idx[7]],ch9[idx[8]],ch10[idx[9]]);
ご覧のとおり、このコードは決してきれいではありません。また、このコードは1秒あたり28万の文字列を生成できます。それよりもさらに速く実行するアルゴリズムを探しています。
再帰的なアプローチを試しましたが、このアプローチよりも実行が遅いようです。提案?