Advertisement
Jasir

Ternary search

Oct 8th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. double func(double x){
  2.     return -1*1*x*x + 2*x +3;
  3. }
  4.  
  5.  
  6. double ts(double start, double end){
  7.     double l = start, r = end;
  8.  
  9.     for(int i=0; i<200; i++) {
  10.       double l1 = (l*2+r)/3;
  11.       double l2 = (l+2*r)/3;
  12.       //cout<<l1<<" "<<l2<<endl;
  13.       if(func(l1) > func(l2)) r = l2; else l = l1;
  14.       }
  15.  
  16.      double x = l;
  17.     return func(x);
  18. }
  19.  
  20. int tsi(){
  21.     int lo = -1, hi = n;
  22.     while (hi - lo > 1){
  23.         int mid = (hi + lo)>>1;
  24.         if (f(mid) > f(mid + 1))
  25.             hi = mid;
  26.         else
  27.             lo = mid;
  28.     }
  29.     return lo + 1;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement