如何在scala语言中对多个colmun(超过十列)进行排序?

如何在scala语言中对多个colmun(超过十列)进行排序?,scala,sorting,Scala,Sorting,如何在scala语言中对多个colmun(超过十列)进行排序。 例如: 1 2 3 4 4 5 6 3 1 2 1 1 ‌2 3 5 10 期望输出 1 2 1 1 1 2 3 3 2 3 5 4 4 5 6 10 我遵循以下算法。首先更改行和列的尺寸。然后对行进行排序,然后再次更改维度以恢复原始的行-列配置。这是一个概念示例 object SO_42720909 extends App { // generating dummy data val unsorted

如何在scala语言中对多个colmun(超过十列)进行排序。 例如:

1  2  3 4
4  5  6 3
1  2  1 1
‌2  3  5 10
期望输出

1 2 1 1
1 2 3 3
2 3 5 4
4 5 6 10

我遵循以下算法。首先更改行和列的尺寸。然后对行进行排序,然后再次更改维度以恢复原始的行-列配置。这是一个概念示例

object SO_42720909 extends App {

  // generating dummy data
  val unsortedData = getDummyData(2, 3)
  prettyPrint(unsortedData)
  println("----------------- ")

  // altering the dimension
  val unsortedAlteredData = alterDimension(unsortedData)
  //  prettyPrint(unsortedAlteredData)

  // sorting the altered data
  val sortedAlteredData = sort(unsortedAlteredData)
  //  prettyPrint(sortedAlteredData)

  // bringing back original dimension
  val sortedData = alterDimension(sortedAlteredData)
  prettyPrint(sortedData)

  def alterDimension(data: Seq[Seq[Int]]): Seq[Seq[Int]] = {
    val col = data.size
    val row = data.head.size // make it safe
    for (i <- (0 until row))
      yield for (j <- (0 until col)) yield data(j)(i)
  }

  def sort(data: Seq[Seq[Int]]): Seq[Seq[Int]] = {
    for (row <- data) yield row.sorted
  }

  def getDummyData(row: Int, col: Int): Seq[Seq[Int]] = {
    val r = scala.util.Random
    for (i <- (1 to row))
      yield for (j <- (1 to col)) yield r.nextInt(100)
  }

  def prettyPrint(data: Seq[Seq[Int]]): Unit = {
    data.foreach(row => {
      println(row.mkString(", "))
    })
  }
}
object SO_42720909扩展应用程序{
//生成虚拟数据
val unsortedData=getDummyData(2,3)
预打印(未分类数据)
println(“--------------------------”)
//改变尺寸
val unsortedateddata=alterDimension(unsortedData)
//预打印(未分类的数据)
//对修改后的数据进行排序
val sortedalteredata=排序(unsortedalteredata)
//预打印(分类数据)
//恢复原始维度
val sortedData=可变维度(sortedAlteredData)
预打印(分类数据)
def alterDimension(数据:Seq[Seq[Int]]):Seq[Seq[Int]={
val col=data.size
val row=data.head.size//确保安全
因为(我没什么大不了的

val input = io.Source.fromFile("junk.txt")   // open file
                     .getLines               // load all contents
                     .map(_.split("\\W+"))   // turn rows into Arrays
                     .map(_.map(_.toInt))    // Arrays of Ints

val output = input.toList          // from Iterator to List
                  .transpose       // swap rows/columns
                  .map(_.sorted)   // sort rows
                  .transpose       // swap back

output.foreach(x => println(x.mkString(" ")))  // report results
注意:这允许数字之间有任何空格,但如果遇到其他分隔符(逗号等)或该行以空格开头,则无法创建预期的
数组[Int]


此外,如果行的大小不同,
transpose
将抛出。

问题不清楚。您尝试过什么?您是如何读取列的(例如从文件中)?请不要忘记发布您的代码:)是的。从文本文件中,分隔符为空格。请发布您尝试过的代码。您需要首先尝试,并告诉我们您遇到的问题。