import Foundation
func findMedianUnsortedMatrix(_ matrix: [[Int]]) -> Double {
var elements: [Int] = []
// Flatten the matrix
for row in matrix {
for val in row {
elements.append(val)
}
}
// Sort the elements
elements.sort()
// Calculate median
let n = elements.count
if n % 2 == 1 {
// Odd number of elements: return middle element
return Double(elements[n / 2])
} else {
// Even number of elements: return average of two middle elements
return Double(elements[n / 2 - 1] + elements[n / 2]) / 2.0
}
}
let matrix = [
[5, 8, 9, 10],
[1, 4, 6, 13],
[7, 3, 0, 18],
[6, 8, 9, 20]
]
let median = findMedianUnsortedMatrix(matrix)
print(String(format: "Median of the matrix is: %.1f", median))
/*
run:
Median of the matrix is: 7.5
*/