0
点赞
收藏
分享

微信扫一扫

binary search二分查找(Python/C++)

mafa1993 2022-03-11 阅读 94

注意:二分查找的数组一定要是有序单调的

 

Python:

binary_search函数的作用是返回目标元素item的下标,若找不到则return None

def binary_search(list, item):
    low = 0
    high = len(list) - 1
    while low<=high:
        mid = (low+high)//2
        guess = list[mid]
        if guess == item:
            return mid
        elif guess<item:
            low = mid + 1
        else:
            high = mid - 1
    return None
my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 3)) # => 1
print(binary_search(my_list, -1)  # => None

C++:

//二分搜索
#include <iostream>
using namespace std;
int binary_search(int* arr, int item,int len) 
{
	int left = 0;
	int right = len - 1;
	int mid,guess;
	while (left <= right)   //这里一定是<=,如果只是<就错了
	{
		mid = (left + right) / 2;
		guess = arr[mid];
		if (guess == item)
		{
			return mid;
		}
		else if (guess < item)
		{
			left = mid + 1;
		}
		else
		{
			right = mid - 1;
		}
	}
	return -1;  //跳出循环前还没执行return mid那就是搜索失败了,返回-1;
}
int main()
{
	int arr[5] = { 1,3,5,7,9 };
	int len = 5;
	cout << binary_search(arr, 9, 5) << endl;  //输出9的下标:4
	return 0;
}

二分查找的时间复杂度:O(logn)

举报

相关推荐

0 条评论