-3

我的教授要求按列对二维字符数组进行排序,因此他想要排序的附加数组是

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

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

4

2 回答 2

0

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

于 2012-12-13T00:40:24.683 回答
0

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

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

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

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

于 2012-12-13T00:40:40.987 回答