using System;
class TernarySearchDemo
{
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
}
static void Main()
{
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)
Console.WriteLine("Element found at index: " + index);
else
Console.WriteLine("Element not found.");
}
}
/*
run:
Element found at index: 7
*/