【C++】二分查找的递归形式和非递归形式
来源:互联网 发布:qq空间推广淘宝店铺 编辑:程序博客网 时间:2024/05/17 03:07
二分查找
二分查找,又名折半查找,在有序数组中查找元素的效率很高;缺点就是只能查询有序表,因此适用于不用频繁插入删除的有序表
如果没有二分查找,通过遍历来查询表中元素的时间复杂度为O(N)
而二分查找时间复杂度为O(lgN)
以非递归的形式实现二分查找
//二分查找的非递归形式 int BinaryResearchNonR(int *arr,int left, int right, int key){ while (left <= right){int mid = left&right + ((left ^ right) >> 1);if (arr[mid] > key){right = mid - 1;}else if (arr[mid] < key){left = mid + 1;}else{return mid;}}//没有找到,返回-1 return -1;}
以递归的形式实现二分查找
//二分查找的递归形式 int BinaryResearch(int* arr, int left, int right, int& key)//这里我们传入引用,避免了值传递的拷贝过程{if (right < left)return -1;//求平均值,相同位加上不同位的一半就是整体的一半 int mid = (left&right) + ((left^right) >> 1);if (arr[mid] > key){return BinaryResearch(arr, left, mid - 1, key);}else if (arr[mid] < key){return BinaryResearch(arr, mid + 1, right, key);}else{return mid;}//没有找到,返回-1 return -1;}
测试函数
void TestBinartResearch(){int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };int key = 9;int ret = BinaryResearch(arr, 0, 9, key);cout << ret << endl;}
1 0
- 【C++】二分查找的递归形式和非递归形式
- 算法_二分查找的递归和非递归形式
- 递归形式二分查找
- 折半查找法的递归和非递归形式
- 递归和非递归的二分查找
- 二分查找的递归和非递归
- 算法导论学习2.3-5 二分查找的递归形式
- 二分递归查找和非递归查找
- 二分查找算法递归和非递归实现(C++)
- 二分查找(C++)+递归和非递归算法
- C语言:递归和非递归实现二分查找
- 二分查找递归和非递归实现
- 二分查找算法 递归和非递归
- 二分查找(递归和非递归)
- 二分查找递归和非递归实现
- 二分查找递归和非递归实现
- 二分查找递归和非递归
- 二分查找-递归和非递归
- JS学习第三篇;AngularJS的使用
- 结对测试工具PICT用户手册(7)——样本模型
- 宏康HY19系列单片机之低功耗
- linux启动的第一个阶段(从开机到main)
- JAVA通过JDBC连接MySQL数据库方法和示例
- 【C++】二分查找的递归形式和非递归形式
- 【Tips】关于Eclipse使用Maven插件遇到的问题
- Google Guice 小试牛刀--1
- linux学习系列--1.虚拟机安装 centos minimal 配置 ssh ftp
- 代码只为兴趣而写
- cpu多核技术发展
- 62. Unique Paths
- ireport线性图
- 去除代码中的注释(二) 实现 上