object MedianMatrix {
def findMedianUnsortedMatrix(matrix: Array[Array[Int]]): Double = {
val elements = matrix.flatten
// Sort the elements
val sorted = elements.sorted
// Calculate median
val n = sorted.length
if (n % 2 == 1) {
// Odd number of elements: return middle element
sorted(n / 2).toDouble
} else {
// Even number of elements: return average of two middle elements
(sorted(n / 2 - 1) + sorted(n / 2)) / 2.0
}
}
def main(args: Array[String]): Unit = {
val matrix = Array(
Array(5, 8, 9, 10),
Array(1, 4, 6, 13),
Array(7, 3, 0, 18),
Array(6, 8, 9, 20)
)
val median = findMedianUnsortedMatrix(matrix)
println(f"Median of the matrix is: $median%.1f")
}
}
/*
run:
Median of the matrix is: 7.5
*/