【C/C++】折半查找(二分查找)
来源:互联网 发布:java中的序列化 编辑:程序博客网 时间:2024/05/29 02:26
一、二分查找
在C和C++里,二分查找是针对有序数组所用的一种快速查找元素的方法。
二、二分查找的条件以及优缺点
条件:针对有序数组(元素从小到大或从大到小)
优点:查询速度较快,时间复杂度为O(n)
缺点:有硬性条件的限制,而且即使查到后,插入与删除困难。
三、图片详解
四、二分查找C语言代码块(封装后)
封装函数解释:
函数原型:binary_research(int arr[],int left , int right , int element)
函数功能:利用二分法查找数组元素
返回值 :若找到元素,返回元素数组下标;否则,返回-1
代码块:
int binary_research(int arr[],int left,int right,int element){while(left<=right){int mid = (left+right)/2;if(arr[mid]>element){right = mid - 1;}else if(arr[mid]<element){left = mid + 1;}else {return mid;}}return -1;}
主函数代码块:
int main(){int array[] = {1,2,3,4,5,6,7,8,9};int right = <a target=_blank href="http://blog.csdn.net/qq_31828515/article/details/51646693">sizeof(array)/sizeof(array[0]) - 1</a>;//利用<a target=_blank href="http://blog.csdn.net/qq_31828515/article/details/51646693">sizeof</a>求数组长度,-1后为右下标int left = 0;//定义右下标并初始化为0int element = 0;//定义查找的元素并初始化为0printf("请输入要查找的元素>");scanf("%d",&element);int location = binary_research(array,left,right,element);if(location>=0)printf("The element's location is %d\n",location);elseprintf("Don't exit this element.\n");return 0;}
五、小结
二分查找对有序数组来说查询速度快。
优化:
可以用
int mid = left - (left - right)/2; //防止越界
或
int mid = left&right+(left^right)>>1;//进行计算机最喜欢的位运算,效率略高
来代替 求两个数的平均值的操作
---------------->>>sizeof打印数组元素
----------------------->>>深入预处理
2 0
- 【C/C++】折半查找(二分查找)
- C语言 折半查找(二分查找)
- c/c++折半查找(二分查找)
- c语言 二分查找 折半查找
- C折半查找(又称二分查找)
- 二分查找(折半查找)与冒泡排序(C语言)
- C语言中二分查找(折半查找)
- C语言实现:折半查找(二分查找)
- C语言实现折半查找(二分查找)的算法
- C/C++查找之一(顺序查找、折半查找(二分查找))
- c语言:代码实现折半(二分)查找
- 算法 - 折半查找(C#)
- C语言-二分查找(折半查找)算法
- 折半查找(二分查找)
- 二分查找(折半查找)
- 二分查找(折半查找)
- 折半查找(二分查找)
- 折半查找(二分查找)
- 互联网存储技术浅谈
- 程序员每天该做的事
- js date时间操作(二)
- LOCAL_MODULE_TAGS 选项说明
- Maven把项目发布到私服
- 【C/C++】折半查找(二分查找)
- 转自知乎 关于提升编程能力
- List<T>的各种排序方法
- 基于 Linux 安装glibc版mysql 5.7.12
- 大型网站系统架构演化之路
- Face Detect And Recognition
- 股市经典头部形态研究(二)
- 欢迎使用CSDN-markdown编辑器
- 周报要点