fun findMedianUnsortedMatrix(matrix: Array<IntArray>): Double {
val elements = mutableListOf<Int>()
// Flatten the matrix
for (row in matrix) {
for (value in row) {
elements.add(value)
}
}
// Sort the elements
elements.sort()
// Calculate median
val n = elements.size
return if (n % 2 == 1) {
// Odd number of elements: return middle element
elements[n / 2].toDouble()
} else {
// Even number of elements: return average of two middle elements
(elements[n / 2 - 1] + elements[n / 2]) / 2.0
}
}
fun main() {
val matrix = arrayOf(
intArrayOf(5, 8, 9, 10),
intArrayOf(1, 4, 6, 13),
intArrayOf(7, 3, 0, 18),
intArrayOf(6, 8, 9, 20)
)
val median = findMedianUnsortedMatrix(matrix)
println("Median of the matrix is: %.1f".format(median))
}
/*
run:
Median of the matrix is: 7.5
*/