[算法] 二分查找(C++)
2021/7/13 22:36:15
本文主要是介绍[算法] 二分查找(C++),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
不想废话了!
条件:升序数组;
结果:找得到的话返回 数组下标,找不到则返回 -1 ;
循环
//二分查找-循环(升序数组) int binarySearch(vector<int>& nums, int target) { int start = 0, end = nums.size() - 1, mid = 0; while (start <= end) { //mid=(start+end)/2; //可以用这个,但是 "start+end" 有可能会造成溢出 mid = start + (end - start) / 2; if (nums[mid] == target) return mid; else if (nums[mid] > target) end = mid - 1; else start = mid + 1; } return -1; }
递归
int search(vector<int>& nums, int target) { return binarySearch(nums, target, 0, nums.size() - 1); } //二分查找-递归(升序数组) int binarySearch(vector<int>& nums, int target, int start, int end) { if (start > end) return -1; int mid = (start + end) / 2; if (nums[mid] == target) return mid; else if (nums[mid] > target) //大于目标,则需要往前找 return binarySearch(nums, target, start, mid - 1); else //小于目标,则需往后找 return binarySearch(nums, target, mid + 1, end); }
三个部分
- 终止条件;
- 中间值是否符合;
- 继续查找;
这篇关于[算法] 二分查找(C++)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解