新手学习数据结构与算法---二分查找算法
来源:互联网 发布:淘宝网自助开通 编辑:程序博客网 时间:2024/05/17 02:48
上次写排序,查找的时候居然忘记的二分查找算法,今天就来实现,两种:递归与非递归
如果大家有什么建议,我一定多多学习!
//二分搜索算法(折半搜索算法) //时间复杂度:O(log2n) #include <iostream>//非递归算法---返回数组下标 template <typename T>int BinarySearch(T a[], const T & x, int n) //数组a[],查找x这个元素,一共有n个元素{int left = 0,middle,right = n - 1;while(left <= right){middle = (left + right) / 2;if(a[middle] == x) return middle;else if(a[middle] > x)right = middle - 1;elseleft = middle + 1;}return -1;} //递归算法template <typename T>int BinarySearch(T a[], int x, int left, int right){if(left > right) //递归出口 return -1;else{int middle = (left + right) / 2;if(a[middle] == x)return middle;else if(a[middle] > x) //果断递归哈 return BinarySearch(a, x, left, middle - 1); //才开始少了个return elsereturn BinarySearch(a, x, middle + 1, right);}} int main(){using std::cin;using std::cout;using std::endl;int a[6] = {1, 3, 8, 9, 11, 15};int x;while(cin >> x){int i = BinarySearch(a, x, 0, 5); //这是递归的 if(i != -1)cout << a[i] << endl;elsecout << "FAILED!" << endl; }return 0;}
- 新手学习数据结构与算法---二分查找算法
- 【数据结构与算法】二分查找
- 数据结构与算法------二分查找
- 【数据结构与算法】二分查找
- 【数据结构与算法】二分查找
- 数据结构与算法,二分查找
- 数据结构与算法(二分查找算法)
- 《数据结构与算法》学习笔记19 递归_二分查找
- 数据结构-二分查找算法
- 数据结构:二分查找算法
- python数据结构与算法28 二分查找
- 【数据结构与算法】九 二分查找
- 数据结构与算法之二分查找
- 数据结构与算法(10)二分查找
- Java数据结构与算法之二分查找
- 数据结构与算法之二分查找
- Java数据结构与算法之【二分查找】
- 数据结构与算法之二分查找
- poj 3225(线段树)
- 反向Ajax,第3部分:Web服务器和Socket.IO
- 一种节能型视频监控终端的设计
- 常用JDBC连接数据库方法总结如下:
- 反向Ajax,第4部分:Atmosphere和CometD
- 新手学习数据结构与算法---二分查找算法
- 反向Ajax,第5部分:事件驱动的Web开发
- hbase性能调优
- 内存屏障:barrier()与mb()
- 从瀑布到敏捷(二)瀑布的脑袋顶着敏捷的旗号进行裸奔的疯狂
- “框选缩放居中”算法
- 理解缓存
- netlink的使用
- emacs 快捷键设置 基础知识篇