没有Bug的二分法
来源:互联网 发布:单片机电子时钟原理图 编辑:程序博客网 时间:2024/05/29 15:17
每一个学过数据结构和算法的人都知道二分法,对于二分法的定义和思想了然于胸,然而,真正能够在很短的时间里面写出没有bug的二分法是不容易的一件事。想要编写没有bug的二分查找,最重要的亮点就是判断循环体是否终止的语句以及边界值left,right和区间值这三个地方要保持一致。下面记录二分法的两个不同的边界写法,千万不要搞混了。
写法一:
int BinarySearch(vector<int>& nums, int value) { int len = nums.size(); int left = 0; int right = len - 1; while (left <= right) { int middle = left + ((right - left) >> 1); if (nums[middle] > value) { right = middle - 1; } else if (nums[middle] < value) { left = middle + 1; } else { return middle; } } return -1;}
写法二:
int BinarySearch(vector<int>& nums, int value) { int len = nums.size(); int left = 0; int right = len; // 关键点 while (left < right) { // 终止条件修改 int middle = left + ((right - left) >> 1); if (nums[middle] > value) { right = middle; // 此处也要修改 } else if (nums[middle] < value) { left = middle + 1; } else { return middle; } } return -1;}
阅读全文
0 0
- 没有Bug的二分法
- 二分法查找的bug与解决
- 软件的脆弱:从“二分法查找”的bug说开去
- BUG修复:PaxScript没有异或运算的bug
- OWB的IFrame没有析构bug
- ie下面,没有背景色的bug
- 事后诸葛亮:如何写出没有bug的软件
- 一个没有bug的二分查找算法
- 为什么写出正确的二分法很难? 以下是我写出的,估计也有BUG。
- 什么样的程序员才能写出没有bug的代码?
- 什么样的程序员才能写出没有bug的代码呢?
- 希望今天没有 bug ~
- 程序员怎么样才能保证自己的程序没有BUG
- QQ一个没有什么价值的bug 【 ALLyeSNO 】
- 评“程序员怎么样才能保证自己的程序没有BUG”
- 程序员怎么样才能保证自己的程序没有BUG
- 程序员怎么样才能保证自己的程序没有BUG
- 程序员怎么样保证自己的程序没有BUG
- 使用dom4j实现读取和写入xml文件
- let关键字
- 在移动端输入框在软键盘弹出后位置矫正
- bzoj4199[luoguP2178]品酒大会[noi2015] (后缀数组+并查集)
- SNMP实践
- 没有Bug的二分法
- linux debian8.2版本安装详细步骤(无图)
- ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
- bzoj 1009: [HNOI2008]GT考试(dp+kmp+矩阵快速幂)
- DGUT oj(002)
- java继承
- Hibernate遇到的问题
- Visual Studio(VS2017)配置C/C++-PostgreSQL(9.6.3)完整开发环境
- [cv] Image Convolution and Edge Detection (2nd)