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
*/