zoukankan      html  css  js  c++  java
  • 二分查找c++简单模板

     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 }
  • 相关阅读:
    学习新东西 方法
    转 Dock 外 命令解析
    转 Dockerfile 常用指令
    RPC应用的java实现(转)
    link with editor
    org.xml.sax.SAXParseException: prolog 中不允许有内容
    webservice
    logging.xml file setfile(null,true) call failed
    log4j配置 logging.xml (转载)
    tomcat server.xml docbase workdir
  • 原文地址:https://www.cnblogs.com/stranger-/p/6770871.html
Copyright © 2011-2022 走看看