关于二分算法
首先概念部分不多就不多做说明了直接上维基百科的链接了。维基百科-二分查找 翻不了墙的呢就上百度吧。百读百科-二分查找(个人推荐学习算法还是多看看维基百科比较好,因为有动图演示,还有各种代码的实现,比较好一点)
二分查找的优点
##时间复杂度:折半搜索每次把搜索区域减少一半,时间复杂度为 O(log n)。(n代表集合中元素的个数)
##空间复杂度:O(1),以递归形式定义,但是尾递归,可改写为循环。
实现
- 首先先定义一个有序数组,并定义要查找的数。
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
- 定义左右下标
需要注意的是因为C语言字符串结尾是用’\0’结尾,所以一定要减去最后一个字符(’\0’),这里用了函数sizeof(arr)来获得数组的大小,再用sizeof(arr[0])获得数组首元素大小,以此来计算数组中的元素个数。