【问题标题】:Permutations and then sorting in Java排列然后在Java中排序
【发布时间】:2012-11-09 01:16:06
【问题描述】:

我有一个排序问题。

假设我有 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

(在这种情况下,"three" 依次获得 2 的那个在排序时太随机了)

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

只需复制粘贴这段代码,一切都会好起来的”我真的很想了解如何编写这样的东西。

我应该如何解决这个问题?

【问题讨论】:

  • 相信我,你想要它或你不想要它,你不会得到只需复制粘贴此代码,一切都会正常工作Stack Overflow ,至少来自了解网站概念的会员
  • 我补充说这不是一种粗鲁的姿态,但我已经在另一个论坛上发布了同样的问题,没有一个人经历过它的工作过程。我没有冒犯任何人的意思。我很高兴得到所有帮助。
  • 兄弟,我的手势也不是粗鲁的。只是为了噱头。一些严肃的帖子之间的乐趣是好的:),如果你觉得被冒犯了,我很抱歉。欢迎来到Stack Overflow

标签: java arrays sorting loops recursion


【解决方案1】:

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

第 1 步:- 将临时变量初始化为 0

第 2 步:- 从 0arr.length - temp

迭代您的数组

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

第 4 步: - 将 temp 增加 1

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

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

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

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

1. arr[0][0] - arr[0][1], then ("one" - "two")
2. arr[0][1] - arr[0][2],      ("two" - "three")
.. so on, 

然后进行下一次迭代。将温度增加1: -

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

1. arr[0][0] - arr[0][2], then  ("one" - "three")
2. arr[0][1] - arr[0][3]        ("two" - "four")

.. 以此类推。

最后一次迭代(索引对有差异arr.length - 1):-

1. max = arr.length - 1;
2. arr[0][0] - arr[0][max]      ("one" - "four")

所以,你可以看到,这里没有像sorting 这样的东西。如果您尝试通过排序来做到这一点,那将会非常复杂。

【讨论】:

    【解决方案2】:

    首先想出一个算法。它不必为它设置特定的语言。这只是你自己解决问题的方式。

    然后将其翻译到计算机上。

    这里有一些伪代码可以帮助您入门。

    public pair[] getPairs(string[] arr)
    {
    
        pair[] retval;
        foreach(string s in arr)
        {
            string first = arr.first
            foreach(string s2 in arr.subArray(allbutfirst))
            {
                 retval.Add(newPair(s, s2)
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      相关资源
      最近更新 更多