大家好,我是贤弟!
一、什么是二分法?
二分法是一种常见的搜索算法,也被称为二分查找或折半查找。
它是一种在有序数组中查找特定元素的算法。
二、 二分法的原理
二分法的原理是将数组中间的元素与目标元素进行比较,如果相等,则返回该元素的索引;如果目标元素小于中间元素,则在数组的左半部分继续查找;如果目标元素大于中间元素,则在数组的右半部分继续查找。
通过不断地缩小查找范围,最终可以找到目标元素或确定其不存在于数组中。
三、下面是使用C语言实现二分法的算法:
```cint binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1;}```
注意:
在这个算法中,`arr`是有序数组,`left`和`right`分别是数组的左右边界,`target`是要查找的目标元素。
算法使用`while`循环来不断缩小查找范围,直到找到目标元素或确定其不存在于数组中。
在每次循环中,算法计算中间元素的索引`mid`,并将其与目标元素进行比较。
如果相等,则返回`mid`;如果目标元素小于中间元素,则继续在左半部分查找;如果目标元素大于中间元素,则继续在右半部分查找。
如果最终未找到目标元素,则返回-1。
需要注意的是,二分法只适用于有序数组。
如果数组未排序,则需要先对其进行排序。
领取专属 10元无门槛券
私享最新 技术干货