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

本文共 1445 字,大约阅读时间需要 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)降序的情况:

    

 

  

转载于:https://www.cnblogs.com/codingmengmeng/p/5621945.html

你可能感兴趣的文章
在NT中直接访问物理内存
查看>>
Intel HEX 文件格式
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
回调没用,加上iframe提交表单
查看>>
(安卓)一般安卓开始界面 Loding 跳转 实例 ---亲测!
查看>>
Mysql 索引优化 - 1
查看>>
LeetCode(3) || Median of Two Sorted Arrays
查看>>
大话文本检测经典模型:EAST
查看>>
待整理
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
对数器的使用
查看>>