object MatrixSearch {
def searchMatrix(matrix: Array[Array[Int]], target: Int): Boolean = {
val rows = matrix.length
if (rows == 0) {
println("Not found")
return false
}
val cols = matrix(0).length
var row = 0
var col = cols - 1
while (row < rows && col >= 0) {
val value = matrix(row)(col)
if (value == target) {
println(s"Found: i = $row j = $col")
return true
} else if (value > target) {
col -= 1
} else {
row += 1
}
}
println("Not found")
false
}
def main(args: Array[String]): Unit = {
val matrix = Array(
Array(2, 3, 5, 7, 8),
Array(10, 13, 17, 18, 19),
Array(25, 26, 30, 37, 38),
Array(43, 46, 50, 51, 99)
)
searchMatrix(matrix, 37)
}
}
/*
run:
Found: i = 2 j = 3
*/