大家好,我是Yang。欢迎大家来到我的博客,希望能和大家多多交流。地址:https://blog.youkuaiyun.com/Ziyang1060。如果大家觉得看完之后能有点收获,不妨点个赞来庆祝庆祝~
分而治之:D&C ,divide and conquer
- 找出简单的基线条件;
- 思考如何缩小问题的规模,使之符合基线条件。
二分查找算法
算法复杂度: O(log n)
一般而言,对于包含n个元素的有序数组,用二分查找最多需要log n步,而简单查找最多需要n步。
int binary_search(int arr[], int size,int key)
{
int low = 0;
int high = size - 1;
int middle;
while (low <= high)
{
middle = (low + high) / 2; //C语言向下取整
if (arr[middle] < key)
{
low = middle + 1;//缩小范围
}
else if (arr[middle] > key)
{
high = middle - 1;//缩小范围
}
else//基线条件
{
return middle;//返回该值的索引
}
}
return -1;//未在数组中找到该值
}
欢迎大家评论交流~