How to sort each column of a matrix with strings in Scala

1 Answer

0 votes
object MatrixColumnSorter {
  def sortColumns(matrix: Array[Array[String]]): Unit = {
    val rows = matrix.length
    val cols = matrix(0).length

    for (col <- 0 until cols) {
      // Extract column into an array
      val column = Array.ofDim[String](rows)
      for (row <- 0 until rows) {
        column(row) = matrix(row)(col)
      }

      // Sort the column
      scala.util.Sorting.quickSort(column)

      // Place sorted values back into the matrix
      for (row <- 0 until rows) {
        matrix(row)(col) = column(row)
      }
    }
  }

  def printMatrix(matrix: Array[Array[String]]): Unit = {
    matrix.foreach(row => println(row.mkString(" ")))
  }

  def main(args: Array[String]): Unit = {
    val matrix = Array(
      Array("ccc", "zzzz", "yyyyyy"),
      Array("eeee", "aaa", "ffff"),
      Array("uu", "hhh", "uuu"),
      Array("bbb", "gg", "x")
    )

    println("Original Matrix:")
    printMatrix(matrix)

    sortColumns(matrix)

    println("\nSorted Matrix:")
    printMatrix(matrix)
  }
}


 
/*
run:

Original Matrix:
ccc zzzz yyyyyy
eeee aaa ffff
uu hhh uuu
bbb gg x

Sorted Matrix:
bbb aaa ffff
ccc gg uuu
eeee hhh x
uu zzzz yyyyyy

*/

 



answered Jun 2, 2025 by avibootz
...