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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。