Блог пользователя evandrix

Автор evandrix, 14 лет назад, По-английски

Ternary Search

This search finds the min or max in an array that is either strictly increasing and then decreasing or strictly decreasing then stricly increasing.

// array, left bound, right bound, abs(precision) value for array
int ternarySearch(int data[], int left, int right, int precval) {
  if (right - left < precval)
    return (left + right)/2;
   
  // Variable to store first 1/3 of array
  int first_third = (left * 2 + right) / 3;
  // Variable to store last 1/3 of array
  int last_third = (left + right * 2) / 3;
   
  if (data[first_third] < data[last_third])
    return ternarySearch(data, first_third, right, precval);
  else
    return ternarySearch(data, left, last_third, precval);    
}
  • Проголосовать: нравится
  • +9
  • Проголосовать: не нравится

»
14 лет назад, скрыть # |
 
Проголосовать: нравится +22 Проголосовать: не нравится

Keep up the good work even if people downvote !