首页 > 其他 > 详细

STL:二分法模板

时间:2016-02-01 15:40:47      阅读:127      评论:0      收藏:0      [点我收藏+]

  我发现每次我做二分题目的时候,自己写的upper_bound和lower_bound老是会出错。

  而且对于普通的整数二分的时候lb和rb不好控制

  虽然有时候可以直接用模板的STL,但是感觉对于某些问题还是不是很方便(主要是对于模板struct不是很支持)

  我直接模仿stl写了两个自己用的模板,以后就用这俩就好了,不用烦了

 1 typedef int Type;
 2 static int _array[];
 3 
 4 Type *Binary_Lower_Bound(int &sum_comb, Type val)
 5 {
 6     int lb = 0, mid, count1 = sum_comb, count2;
 7     while (count1 > 0)
 8     {
 9         count2 = count1 >> 1;
10         mid = lb + (count1 >> 1);
11         if (_array[mid] < val)
12         {
13             lb = ++mid;
14             count1 -= count2 + 1;
15         }
16         else count1 = count2;
17     }
18     return &_array[lb];
19 }
20 
21 Type *Binary_Upper_Bound(int &sum_comb, Type val)
22 {
23     int lb = 0, mid, count1 = sum_comb, count2;
24     while (count1 > 0)
25     {
26         count2 = count1 >> 1;
27         mid = lb + (count1 >> 1);
28         if (_array[mid] <= val)
29         {
30             lb = ++mid;
31             count1 -= count2 + 1;
32         }
33         else count1 = count2;
34     }
35     return &_array[lb];
36 }

 

STL:二分法模板

原文:http://www.cnblogs.com/Philip-Tell-Truth/p/5175161.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!