C++程序设计原理与实践 第二十六章部分答案

 1 bool fn(vector<int>::iterator vi1,vector<int>::iterator vi2,int i)
 2 {
 3     vector<int>::iterator vi3=vi2-1;
 4     if(vi1>vi3)
 5         return 0;
 6     else
 7     {
 8         vector<int>::iterator vi=vi1+(vi2-vi1)/2;
 9         if(*vi==i)
10             return 1;
11         else if(*vi>i)
12             return fn(vi1,vi,i);
13         else
14             return fn(vi+1,vi2,i);
15     }
16 
17 
18 }
自编的binary_search
 1 template<class U,class T>
 2 bool fn(U vi1,U vi2,const T&i)
 3 {
 4     U vi3=vi2-1;
 5     if(vi1>vi3)
 6         return 0;
 7     else
 8     {
 9         U vi=vi1+(vi3-vi1)/2;
10         if(*vi==i)
11             return 1;
12         else if(*vi>i)
13             return fn(vi1,vi,i);
14         else
15             return fn(vi+1,vi2,i);
16     }
17 
18 
19 }
20 
21 
22 
23 template<class U,class T,class P>
24 bool fnn(U vi1,U vi2,const T&i,P p)
25 {
26     U vi3=vi2-1;
27     if(vi1>vi3)
28         return 0;
29     else
30     {
31         U vi=vi1+(vi3-vi1)/2;
32         if(!p(*vi,i))
33             fnn(vi1,vi,i,p)
34         else if(!p(i,*vi))
35             return fnn(vi+1,vi2,i,p);
36         else
37             return 1;
38     }
39 
40 
41 }
习题2 3

 

posted on 2014-11-10 23:43  月巴巴  阅读(117)  评论(0)    收藏  举报