【问题标题】:char multidimensional array sorting in java [closed]java中的char多维数组排序[关闭]
【发布时间】:2023-03-14 20:35:01
【问题描述】:

我的教授要求按列对 2d 字符数组进行排序,所以他想要排序的附加数组是

  unsorted          sorted last column
Lcekoeddhoffbmg     Balgfcaelhfkgeb
Lkcmggjcdhhglif     Kmlhmhcddfoeilc
Cgldjhcekjigcdd     Cgldjhcekjigcdd
Cgldjhcekjigcdn     Lkcmggjcdhhglif
Bffmdbkcenlafjk     Lcekoeddhoffbmg
Fggdijijegfblln     Jjlncnimjldfedj
Jjlncnimjldfedj     Bffmdbkcenlafjk
Amliglfohajcdmm     Amliglfohajcdmm
Balgfcaelhfkgeb     Fggdijijegfblln
Kmlhmhcddfoeilc     Cgldjhcekjigcdn

但问题是他希望整行都是相同的字符,所以如果我们对最后一列进行排序,我们只需相应地向上或向下移动行。我不知道如何开始这项工作,任何帮助将不胜感激

【问题讨论】:

  • 您是如何尝试解决这个问题的?

标签: java arrays sorting char


【解决方案1】:

假设您知道如何对一维数组进行排序(否则查找),这非常相似。

不是交换两个字符(当您使用冒泡排序或任何其他基于交换项目的排序算法时),而是交换两个完整的行。 所以你会得到这样的东西(用于冒泡排序):

for char1 of each_last_row_char
  for char2 of each_last_row_char_after_char1
    if char2 < char2 then
      swap rows of char1 and char 2
    end
  end
end

交换完整的行也不是那么困难。您迭代行中的项目数量(假设它们具有相同数量的字符),并交换两行的项目:

for index of row_items
  tmp = row1[index]
  row1[index] = row2[index]
  row2[index] = tmp
end

就像常规的交换实现一样,但适用于所有项目。

【讨论】:

  • 按列对 2d 字符数组进行排序你没有在问题的第一行读过吗?
  • 正如我所读:每行的最后一个字符(即最后一列)用于对行进行排序。这正是我的解释和伪代码的目的。
【解决方案2】:

您可以将每个 char 数组转换为字符串,然后使用 java 的字符串排序功能。然后将您的字符串转换回 char 数组。

【讨论】:

  • 这是作业问题。可能是他不允许使用 API。
  • 这个想法服务器按整行对矩阵进行排序,而 OP 需要按列对 2d 字符数组进行排序。此外,Java 的 String 没有排序功能,还有其他 API,如 java.util.Arraysjava.util.Collections 来完成这项工作,但由于这看起来像家庭作业,我猜 OP 不能使用其中任何一个。
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 2021-09-27
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多