算法非常easy,直接贴代码啦

  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template<typename T>
  6. int binary_search(const T s[],const int size,const T &m)
  7. {
  8. if(size <= 0){
  9. return -1;
  10. }
  11. int i = size/2;
  12. int k = 1;
  13. int step = 1;
  14.  
  15. while(step > 0 && i >= 0 && i < size){
  16. step = size/(2*++k);
  17. if(m == s[i]){
  18. return i;
  19. }else if(m > s[i]){
  20. i += step;
  21. }else{
  22. i -= step;
  23. }
  24. }
  25.  
  26. return -1;
  27. }
  28.  
  29. int main()
  30. {
  31. long s[]={1,3,5,6,19,27,38,45,687,6789,10000};
  32.  
  33. int len = sizeof(s)/sizeof(long);
  34.  
  35. cout<<"0:"<<binary_search<long>(s,len,1)<<endl;
  36. cout<<"1:"<<binary_search<long>(s,len,3)<<endl;
  37. cout<<"5:"<<binary_search<long>(s,len,27)<<endl;
  38. cout<<"10:"<<binary_search<long>(s,len,10000)<<endl;
  39. cout<<"-1:"<<binary_search<long>(s,len,10001)<<endl;
  40. cout<<"-1:"<<binary_search<long>(s,len,44)<<endl;
  41. cout<<"-1:"<<binary_search<long>(s,len,0)<<endl;
  42.  
  43. return 0;
  44. }

二分查找法的C++泛型实现的更多相关文章

  1. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

  2. 用c语言编写二分查找法

    二分法的适用范围为有序数列,这方面很有局限性. #include<stdio.h> //二分查找法 void binary_search(int a[],int start,int mid ...

  3. java for循环和数组--冒泡排序、二分查找法

    //100以内与7相关的数   for(int a=1;a<=100;a++){    if(a%7==0||a%10==7||a/10==7){     System.out.print(a+ ...

  4. 二分查找法 java

    前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...

  5. 学习练习 java 二分查找法

    package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...

  6. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

  7. 选择、冒泡排序,二分查找法以及一些for循环的灵活运用

    import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] ar ...

  8. R语言实现二分查找法

    二分查找时间复杂度O(h)=O(log2n),具备非常高的效率,用R处理数据时有时候需要用到二分查找法以便快速定位 Rbisect <- function(lst, value){ low=1 ...

  9. java学习之—递归实现二分查找法

    /** * 递归实现二分查找法 * Create by Administrator * 2018/6/21 0021 * 上午 11:25 **/ class OrdArray{ private lo ...

随机推荐

  1. CMMI管理体系

    帮助企业对软件工程过程进行管理和改进,增强开发与改进能力,从而按时,不超过预算地开发软件. CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模块框架消除了各个模型的不一致性,减少了 ...

  2. Cocos2d-x

    http://blog.csdn.net/ccf19881030/article/details/9204801 Cocos2d-x相关的博客以及官网信息 1.CSDN博主无幻的博客:http://b ...

  3. [GIt] 团队工作效率分析工具gitstats

    copy : http://www.cnblogs.com/ToDoToTry/p/4311637.html 如果你是团队领导,关心团队的开发效率和工作激情:如果你是开源软件开发者,维护者某个repo ...

  4. 深度学习数据集Deep Learning Datasets

    Datasets These datasets can be used for benchmarking deep learning algorithms: Symbolic Music Datase ...

  5. 解决 Ubuntu Software (Software Center) Crash 问题

    问题描述: no application data found 解决方式: sudo apt purge gnome-software ubuntu-software sudo apt autorem ...

  6. VC++ 改动VMware BIOS、uuid_location、ethernet0_address等

    VC++ 改动VMware BIOS.uuid_location.ethernet0_address等.主要问题例如以下 (1)随机产生16进制数. (2)改动vmx相应项.依据规则一般仅仅改动最后三 ...

  7. HBase性能优化方法总结(转)

    原文链接:HBase性能优化方法总结(一):表的设计 本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. ...

  8. dp 密度 分辨率 屏幕 状态栏 标题栏 适配

    一篇总结的非常完善的博文:http://www.jianshu.com/p/ec5a1a30694b 屏幕像素参数相关信息表格 屏幕级别 像素密度 每英寸像素数   通常分辨率 分辨率别称    默认 ...

  9. angular之interceptors拦截器

    <!DOCTYPE html> <html ng-app="nickApp"> <head> <meta charset="UT ...

  10. MongoDB学习笔记(六)--复制集+sharding分片 && 总结

    复制集+sharding分片                                                               背景 主机 IP 服务及端口 Server A ...