您的位置:首页 > 其它

经典算法学习——二分查找

2016-08-06 13:47 239 查看
        在所有的查找算法中,二分查找是最简单一种。二分查找要求原先的序列是已经排序的,每次都是以序列中间的数字作为比较,如果小于中间的数字,那么就在序列左边继续递归查找;如果大于中间的数字,那么就在序列右边继续递归查找。直到找到该数字,或者直到序列中只有一个数字的时候都还没找到,则查找失败。查找的时间复杂度可以达到O(logN),应该说是除了数组按下标查找O(1)以外的最快的查找方式了。示例代码上传至 https://github.com/chenyufeng1991/BinarySearch 。
使用C语言完整实现如下:
// 实现二分查找
#include <stdio.h>
#include <stdlib.h>

void BinarySearch(int *arr, int start, int end, int num);

int main(int argc, const char * argv[])
{
int array[] = {4,5,6,7,8,9};

BinarySearch(array, 0, 5, 99);

return 0;
}

void BinarySearch(int *arr, int start, int end, int num)
{
int mid = (start + end) / 2;
if (arr[mid] == num)
{
printf("%d ",mid);
return ;
}

if (start == end)
{
printf("没有找到");
return ;
}

if (num < arr[mid])
{
BinarySearch(arr, start, mid, num);
}

if (num > arr[mid])
{
BinarySearch(arr, mid + 1, end, num);
}

return ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: