2.1-binSearch and fibSearch
Posted wsshub
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.1-binSearch and fibSearch相关的知识,希望对你有一定的参考价值。
二分查找和斐波那契查找
1 #include<iostream> 2 using namespace std; 3 class Fib{ 4 public:int f,g; 5 Fib(int n) 6 { 7 f=1,g=0; 8 while(g<n) 9 next();}//因构造函数返回函数 10 11 int next(){ 12 g=g+f; 13 f=g-f; 14 return g; 15 } 16 int get(){ 17 return g; 18 } 19 int prev(){ 20 f=g-f; 21 g=g-f; 22 return g; 23 } 24 25 }; 26 int binSearch(int *A,int e,int lo,int hi){ 27 while(lo<hi){ 28 int mi=(lo+hi)>>1; 29 if(e<A[mi])hi=mi; 30 else if(e>A[mi])lo=mi+1; 31 else 32 return mi; 33 } 34 return -1; 35 } 36 int fibSerach(int *A,int e,int lo,int hi){ 37 Fib fib(hi-lo); 38 while(lo<hi){ 39 while(hi-lo<fib.get()) 40 fib.prev(); 41 int mi=lo+fib.get()-1; 42 if(e<A[mi])hi=mi; 43 else if(e>A[mi])lo=mi+1; 44 else 45 return mi; 46 } 47 } 48 49 int main(){ 50 51 52 return 0; 53 }
以上是关于2.1-binSearch and fibSearch的主要内容,如果未能解决你的问题,请参考以下文章
(OrElse and Or) and (AndAlso and And) - 啥时候使用?
Alert and Action sheets and Timer and Animation
D. Kuro and GCD and XOR and SUM