二分查找实现与算法分析
来源:互联网 发布:柏林 韩国电影 知乎 编辑:程序博客网 时间:2024/06/05 11:21
二分查找又名折半查找。找到中间值与要找的数值进行比较,不过的缩小查找空间。这里我们用递归与非递归分别实现,并分析空间复杂度与时间复杂度
//二分查找递归算法//时间复杂度 O(lg N)//空间复杂度 O(1g N)#include<iostream>using namespace std;int Binary(int* arr, int data, size_t size, int left, int right){if (left <= right)//区间[]左闭右闭{int mid = left + ((right - left) >> 1);if (arr[mid] == data){return mid;}if (arr[mid]<data){left = mid + 1;size = size - left;return Binary(arr, data, size, left, right);}if (arr[mid]>data){right = mid - 1;size = right + 1;return Binary(arr, data, size, left, right);}}cout << "not find" << endl;return -1;}int main(){int arr[9] = { 10,23,24,56,87,99,105,123,999};cout << Binary(arr, 123, 9, 0, 8) << endl;return 0;}
在复杂度的时候也可把O(log2 N)=O(lg N)
//二分查找非递归算法//时间复杂度:O(lg N)//空间复杂度:O(l)#include<iostream>using namespace std;int Binary(int* arr, int data, size_t size, int left, int right){while (left < right){int mid = left + ((right - left) >> 1);if (arr[mid] == data){return mid;}if (arr[mid] < data){left = mid + 1;}if (arr[mid] > data){right = mid;}}return -1;}int main(){int arr[10] = { 5,10, 23, 24, 56, 87, 99, 105, 123, 999 };cout << Binary(arr, 24, 10, 0, 9) << endl;return 0;}
0 0
- 二分查找实现与算法分析
- 二分查找实现与分析
- 二分查找实现与分析
- 算法设计与分析 二分查找
- 二分查找算法分析
- 算法分析:二分查找
- 二分查找算法分析
- 二分查找算法实现
- 二分查找算法实现
- 顺序查找与二分查找的算法实现
- 二分查找算法及分析
- 数据结构与算法分析——二分查找
- 查找算法—折半查找算法分析与实现(Python)
- 二分查找算法的递归与非递归实现
- 二分查找算法(递归与非递归实现)
- 【数据结构与算法】二分查找递归非递归实现
- 二分查找算法的递归与非递归实现
- 二分查找算法递归实现
- 【快斗】一些前端书写规范建议
- EOJ 3256:拼音魔法
- 实例2:设置复选框
- opencv2.x遍历文件夹改变图像分辨率并保存
- CRC校验与RARP协议
- 二分查找实现与算法分析
- mongodb的一些操作
- phpStrom使用技巧及快捷键
- 一些工作上的出现的问题
- Frequent values UVA
- Linux内核启动显示时间信息
- Java大数 poj 1001
- JVM参数配置大全
- jprofiler使用