• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

二分查找c++简单模板

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 //数组a[]中有n各元素,已经按升序排序,待查找的元素x
 2 sort(a,a+n); //升序排序
 3 template<class Type>
 4 int BinarySearch(Type a[],const Type&x,int n)
 5 {
 6     int left=0; //左边界
 7     int right=n-1; //右边界
 8     while(left<=right)
 9     {
10         int middle=(left+right)/2; //中点
11         if(x==a[middle])return middle; //找到x,返回数组中的位置
12         if(x>a[middle]) left=middle+1;
13         else right=middle-1;
14     }
15     return -1; //未找到x
16 }
17 
18 
19 
20 
21 
22 #include<iostream>
23 #include<algorithm>
24 using namespace std;
25 bool compare(int a,int b)
26 {
27     return a<b;                       //升序
28 }
29 template<class Type>int BinarySearch(Type a[],const Type&x,int n)
30 {
31     int left=0;
32     int right=n-1;
33     while(left<=right)
34     {
35         int middle=(left+right)/2;
36         if(a[middle]==x) return middle;
37         if(a[middle]<x) left=middle+1;
38         else right=middle-1;
39     }
40     return -1;
41 }
42 int main()
43 {
44     int a[20];
45     int n,m;
46     cin>>n;
47     for(int i=0; i<n; i++)
48     {
49         cin>>a[i];
50     }
51     sort(a,a+n,compare);
52     for(int i=0; i<n; i++)
53     {
54         cout<<a[i]<<" ";
55     }
56     cout<<endl;
57     m=BinarySearch(a,234,n);
58     cout<<m<<endl;
59     return 0;
60 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[转]C#的usb通讯编程发布时间:2022-07-13
下一篇:
C#-控制台Timer发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap