数据结构与算法之二分查找

简介: 二分法

int binarySearch(int * nums, int target, int left, int right){  //left代表左边界,right代表右边界

   if(left > right) return -1;   //如果左边大于右边,那么肯定就找完了,所以直接返回

   int mid = (left + right) / 2;   //这里计算出中间位置

   if(nums[mid] == target) return mid;   //直接比较,如果相等就返回下标

   if(nums[mid] > target)    //这里就是大于或小于的情况了,这里mid+1和mid-1很多人不理解,实际    上就是在下一次寻找中不算上当前的mid,因为这里已经比较过了,所以说左边就-1,右边就+1

       return binarySearch(nums, target, left, mid - 1);   //如果大于,那么说明肯定不在右边,直接去左边找

   else

       return binarySearch(nums, target, mid + 1, right);  //如果小于,那么说明肯定不在左边,直接去右边找

}

int search(int* nums, int numsSize, int target){

   return binarySearch(nums, target, 0, numsSize - 1);

}

目录
相关文章
|
10天前
|
算法 索引
【算法】——二分查找合集
二分查找基础模版和进阶模版,查找元素位置,搜索插入位置,x的平方根,山脉数组的峰顶索引,寻找峰值,点名
|
5月前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
3月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
|
3月前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
|
3月前
|
消息中间件 存储 算法
一文搞懂二分查找算法!
一文搞懂二分查找算法!
147 0
|
3月前
|
算法 Java 索引
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
37 0
|
5月前
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组
|
6月前
|
算法
【算法】二分查找(整数二分和浮点数二分)
算法学习——二分查找(整数二分和浮点数二分)
50 0
【算法】二分查找(整数二分和浮点数二分)
|
5月前
|
算法
【算法】二分查找——二分查找
【算法】二分查找——二分查找
|
7月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现