object TernarySearchProgram {
// Ternary search function
def ternarySearch(l: Int, r: Int, key: Int, arr: Vector[Int]): Int = {
var left = l
var right = r
while (left <= right) {
val mid1 = left + (right - left) / 3
val mid2 = right - (right - left) / 3
if (arr(mid1) == key) return mid1
if (arr(mid2) == key) return mid2
if (key < arr(mid1)) {
right = mid1 - 1
} else if (key > arr(mid2)) {
left = mid2 + 1
} else {
left = mid1 + 1
right = mid2 - 1
}
}
-1 // not found
}
def main(args: Array[String]): Unit = {
val arr = Vector(1, 2, 8, 14, 15, 64, 78, 89, 99, 100, 110, 123)
val toSearch = 89
val index = ternarySearch(0, arr.length - 1, toSearch, arr)
if (index != -1)
println(s"Element found at index: $index")
else
println("Element not found.")
}
}
/*
run:
Element found at index: 7
*/