博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Binary Search--二分查找
阅读量:6943 次
发布时间:2019-06-27

本文共 1387 字,大约阅读时间需要 4 分钟。

 

Binary Search--二分查找

  采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段 中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

  二分法查找在针对大量有序排列的情况下发挥出很优越的效率,其时间复杂度O(lgN)。

  

  代码:

1 /* 2 Author:Mengmeng 3 Time:2016-6-27 23:33:49 4 Description: 5     采用二分法查找时,数据需是排好序的。  6     基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较, 7     如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段 中查找; 8     若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。 9 */10 #include 
11 using namespace std;12 13 14 int BinarySearch(int data[],int min,int max,int dest,bool UpOrDown)15 {16 int mid = 0;17 if (min > max)//递归结束条件18 {19 cout << "找不到" << dest << "!"<
> dest;57 cout <<"----------------------------------------"<< endl;58 int index = BinarySearch(data1, 0, len - 1, dest,true);59 #endif60 #if 161 cout << "请参照下列数字:" << endl;62 cout << "{
";63 int len = sizeof(data2) / sizeof(int);64 for (int i = 0; i < len; i++)65 cout << data2[i] << " ";66 cout << "}" << endl;67 cout << "输入你要查找的目标:" << endl;68 int dest;69 cin >> dest;70 cout << "----------------------------------------" << endl;71 int index = BinarySearch(data2, 0, len - 1, dest, false);72 #endif73 if (index!=-1)74 cout << dest << "在数组中的位置为第" << index << "个" << endl;75 return 0;76 77 }

 

 

  运行结果:

  (1)升序的情况:

    

  

  (2)降序的情况:

    

 

  

转载地址:http://hsanl.baihongyu.com/

你可能感兴趣的文章
Oracle 10G 服务未启动
查看>>
360消息系统RPC基础库迭代
查看>>
[项目回顾]基于Redis的在线用户列表解决方案
查看>>
MySQL索引使用方法和性能优化
查看>>
vim 学习方法
查看>>
Extamil+postfix web页面管理发送虚拟账号邮件
查看>>
《设计模式系列》---模板方法
查看>>
Facebook推出应用中心 划定主要合作伙伴
查看>>
Runtime.addShutdownHook()(译)
查看>>
yum安装(本地yum源&网络yum源)
查看>>
【209期推荐】HIS实施的尴尬,你到底这是要闹哪样啊?
查看>>
nginx 伪静态 rewrite
查看>>
分布式文件系统之MogileFS
查看>>
每日备份数据的脚本
查看>>
linux下vi命令
查看>>
常用的开源工具总结
查看>>
Citrix XenDesktop桌面登录VM提示Citrix Web插件错误
查看>>
centos 编译安装 python
查看>>
关于 获取 Android 本地手机 号码
查看>>
SpringCloud系列第01节之入门
查看>>