public class TernarySearchProgram {
// Ternary search function
public static int ternarySearch(int l, int r, int key, int[] arr) {
while (l <= r) {
int mid1 = l + (r - l) / 3;
int mid2 = r - (r - l) / 3;
if (arr[mid1] == key) return mid1;
if (arr[mid2] == key) return mid2;
if (key < arr[mid1]) {
r = mid1 - 1;
} else if (key > arr[mid2]) {
l = mid2 + 1;
} else {
l = mid1 + 1;
r = mid2 - 1;
}
}
return -1; // not found
}
public static void main(String[] args) {
int[] arr = {1, 2, 8, 14, 15, 64, 78, 89, 99, 100, 110, 123};
int toSearch = 89;
int index = ternarySearch(0, arr.length - 1, toSearch, arr);
if (index != -1)
System.out.println("Element found at index: " + index);
else
System.out.println("Element not found.");
}
}
/*
run:
Element found at index: 7
*/