博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法概论】分治算法:查找数值
阅读量:4176 次
发布时间:2019-05-26

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

二分查找

时间复杂度:O(logn)

/*给定一个无穷数组,前n个元素都是整数且已排好顺序, n的值未知,其余元素为∞。*/#include 
#include
using namespace std;bool bSearch(int data[], int head, int tail, int x);int at = 0; //记录元素x的位置int main(){ int data[15] = { 0 ,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, INT_MAX, INT_MAX, INT_MAX, INT_MAX }; //输入要查找的值 int x; cin >> x; int n = 0; //记录有序的元素个数 while (data[n] != INT_MAX) { ++n; } //判断是否找到该元素 if (bSearch(data, 0, n - 1, x)) { cout << at << endl; } else { cout << INT_MAX << endl; } return 0;}bool bSearch(int data[], int head, int tail, int x){ int mid = (head + tail) / 2; //找到x,记录其位置,返回主函数 if (data[mid] == x) { at = mid; return 1; } //没有找到x,继续进行二分查找,判断head与tail的关系 if (head != tail) { if (data[mid] > x) { bSearch(data, head, mid - 1, x); } else { bSearch(data, mid + 1, tail, x); } } else { return 0; }}

 

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

你可能感兴趣的文章
RHEL/CentOS 7的kernel tunables及其sysctl命令概述
查看>>
RHEL/CentOS 7中Nginx的systemd service
查看>>
RHEL/CentOS 7的systemd及其systemctl命令概述
查看>>
RHEL/CentOS 7的systemd target及其中的multi-user.target
查看>>
RHEL/CentOS 7中通过systemd service持久化网络命名空间
查看>>
Docker daemon及容器实例的DNS配置详解
查看>>
RHEL/CentOS 7中的网络暨network.service与NetworkManager.service详解
查看>>
RHEL/CentOS 7中的iptables.service与firewalld.service概述
查看>>
RHEL/CentOS 7中的SELinux概述
查看>>
SELinux的运行模式与安全策略详解
查看>>
Linux资源的SELinux context详解
查看>>
SELinux检查与Nginx的反向代理的典型错配案例及解决
查看>>
SELinux检查与Apache HTTP服务器的文件访问典型错配案例及解决
查看>>
Docker容器启动时的第一个进程的设置总结
查看>>
eclipse遇到的第一个问题
查看>>
Java中的内存管理(栈和堆、方法区)
查看>>
二进制 转换方法
查看>>
数组相关(定义、访问、遍历、复制/扩容、排序)
查看>>
面向对象基础梳理
查看>>
ArrayList数组集合方法一览
查看>>