Ternary Search
int ternary_search(const vector<int> &ar, int target, int low, int high) {
if (low <= high) {
int med3 = low + (high - low)/3;
int med4 = low + 2*(high - low)/3;
if (ar[med3] == target)
return med3;
else if (ar[med4] == target) {
return med4;
}
else if(target < ar[med3]) {
return ternary_search(ar, target, low, med3 - 1);
}
else if(target < ar[med4]) {
return ternary_search(ar, target, med3 + 1, med4 - 1);
}
else if (target > ar[med4]) {
return ternary_search(ar, target, med4 + 1, high);
}
}
else {
return -1;
}
}Last updated