简述分治法中经典的二分查找思想及其代码
时间: 2023-07-19 08:06:47 浏览: 53
二分查找是分治法的一种应用,也叫折半查找,它是一种高效的查找算法,可以在有序的数据集合中快速查找指定的元素。
二分查找的基本思想是:假设要查找的元素为x,将有序的数据集合分成两部分,取中间的元素与x进行比较,如果相等则返回,如果小于x则在右半部分继续查找,如果大于x则在左半部分继续查找,直到找到x或者查找完整个数组。
二分查找的核心代码如下:
```
int binarySearch(int arr[], int n, int x) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
```
其中,arr为要查找的有序数组,n为数组长度,x为要查找的元素。left和right分别表示查找区间的左右两端,初始值分别为0和n-1。每次查找时,计算出中间元素的下标mid,如果arr[mid]等于x,则返回mid,否则根据arr[mid]与x的大小关系,缩小查找区间并继续查找,直到找到x或者查找完整个数组。
二分查找的时间复杂度为O(logn),是一种非常高效的查找算法。
相关问题
二分查找分治法具体代码
下面是一个二分查找算法的示例代码:
```
def binary_search(array, target):
left = 0
right = len(array) - 1
while left <= right:
mid = (left + right) // 2
if array[mid] == target:
return mid
elif array[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1 # 如果目标不在数组中,返回 -1
```
该算法的时间复杂度为 O(log n)。
二分查找的设计思想或相应的函数代码
二分查找的设计思想是基于分治的思想,每次将查找区间一分为二,然后根据目标值与中间值的比较结果,确定接下来需要查找的区间。该算法的时间复杂度为 O(log n),其中 n 是数组的长度。
以下是一个示例二分查找函数的代码实现:
```python
def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
该函数接受一个有序数组 nums 和一个目标值 target,返回目标值在数组中的下标,如果目标值不在数组中,则返回 -1。函数采用了循环的方式实现二分查找,通过不断调整左右边界来缩小查找区间。具体实现中,先将左右边界初始化为数组的首尾下标,然后在循环中计算中间值 mid,根据目标值与中间值的大小关系来更新左右边界,直到找到目标值或者查找区间为空。