排列然后在Java中排序

Tho*_*olf 0 java arrays sorting recursion loops

我有一个排序问题.

假设我有4个字符串存储在数组中,其中我想要成对生成所有组合.并且从这些对中对它们进行排序,使得没有2个阵列位置在最大可能的范围内彼此相继

例:

String[] array = {"one", "two", "three", "four"};

// want to generate

one - two
one - three
one - four
two - three
two - four
three - four

// then sort

one - two
three - four
one - four
two - three      //two "three" after each other
one - three
two - four
Run Code Online (Sandbox Code Playgroud)

(在这种情况下相互得到2的那个"three"在排序时也是随机的)

我不知道如何用Java做到这一点.尝试嵌套for循环,有些人告诉我递归循环.我不想要:

" 只需复制粘贴此代码,一切都会正常工作 "我真的很想了解如何写这样的东西.

我该如何处理这个问题?

Roh*_*ain 5

这是你的不是Just copy paste this code and everything will work: -

第1步: - 将temp变量初始化为0.

第2步: -从遍历您的阵列0arr.length - temp

第3步: - 打印 arr[i][temp] - arr[i][i + temp]

第4步: -增量temp1

步骤5: - 重复step 2如果temp < arr.length - 1,因为(i + temp)不能超过arr.length.

因此,对于给定的数组,它将打印: -

String arr[] = {"one", "two", "three", "four"};
Run Code Online (Sandbox Code Playgroud)

第一次迭代(差异为1的索引对): -

1. arr[0][0] - arr[0][1], then ("one" - "two")
2. arr[0][1] - arr[0][2],      ("two" - "three")
.. so on, 
Run Code Online (Sandbox Code Playgroud)

然后转到下一个迭代.增加温度1: -

第二次迭代(差异为2的索引对): -

1. arr[0][0] - arr[0][2], then  ("one" - "three")
2. arr[0][1] - arr[0][3]        ("two" - "four")
Run Code Online (Sandbox Code Playgroud)

......等等.

最后一次迭代(有差异的指数对arr.length - 1): -

1. max = arr.length - 1;
2. arr[0][0] - arr[0][max]      ("one" - "four")
Run Code Online (Sandbox Code Playgroud)

所以,你可以看到,这里没有任何内容sorting.如果你尝试通过排序来做这件事,那将是很复杂的.