java - 计算排列的最佳方法
问题描述
我试图找出在特定场景下查找/自动化所有可能排列的最佳方法。
我有一个程序,它接收一组数字 [X, Y , Z],每个数字都有一个预定义的不确定性。因此,我想针对 [X, Y , Z], [X+e, Y, Z] [xe, Y, Z], [X, Y+e, Z] 等运行我的程序。现在我已经建立一个包含所有 27 种可能性的对象,我正在遍历它,以便为我的程序提供一组新的输入。(我将使用不同的输入集运行我的程序 27 次)
随着时间的推移,我需要更新我的程序以接收更多的数字。所以我想知道是否有更好的方法来计算我的基本集可能具有的所有可能排列。
我宁愿知道实现这一点的方式,而不是使用任何现有的库(如果有的话)。我认为这是一个学习计划。谢谢!
解决方案
这是我前段时间发现的一种排列方法。它在方法中打印它们。它只进行单维排列,但您可以根据需要对其进行调整。
public static void generate(int n, int[] a) {
if (n == 1) {
System.out.println(Arrays.toString(a));
} else {
for (int i = 0; i < n - 1; i++) {
generate(n - 1, a);
if ((n & 1) == 0) {
swap(i, n - 1, a);
} else {
swap(0, n - 1, a);
}
}
generate(n - 1, a);
}
}
public static void swap(int a, int b, int[] array) {
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
推荐阅读
- python - 如何使用python从tableau仪表板下载特定工作表?
- c++ - 数组中具有十进制值的矩阵的转置
- python - 使用带有 pyinstaller 标志 --windowed 的 shutil.which("ffmpeg") 的功能(据说)
- java - handlerinterceptor prehandle 调用了两次
- git - git origin 与其他遥控器,为什么 origin 工作得这么好?
- oracle - 撤消 Oracle APEX 中的活动
- javascript - 如何通过单击图像而不使用锚标记重定向到网页
- python - 如何将字符串值映射为从一开始到字符串数的整数
- javascript - 如何将多个html元素存储在一个变量中作为Javascript中的数组?
- reactjs - 如何使用钩子将样式应用于 React js 中的函数