参考:
https://blog.csdn.net/qq_31828515/article/details/51791833https://www.jianshu.com/p/13a854172b0c
一、二分查找
二分查找又称折半查找,在C和C++里,二分查找是针对有序数组所用的一种快速查找元素的方法。
二、二分查找的条件以及优缺点
条件:针对有序数组(元素从小到大或从大到小) 优点:查询速度较快,时间复杂度为O(n) 缺点:有硬性条件的限制,而且即使查到后,插入与删除困难。
三、图解
![在这里插入图片描述](https://img-blog.csdnimg.cn/b96cd6c9912d47afa66c682f0370b0e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQW1lbGllX3hpYW8=,size_20,color_FFFFFF,t_70,g_se,x_16)
四、实现方式
#include
using namespace std;
/*
*二分查找思想:1、数组从小到大排序;2、查找的key每次和中间数比较,如果key小于mid
查找mid左侧的数组部分;如果key大于mid,则查找mid右侧的数组部分;如果相等,则直接返回mid。
输入:排序数组-array,数组大小-aSize,查找值-key
返回:返回数组中的相应位置,否则返回-1
*/
//非递归查找(循环)
int BinarySearch(int *array, int aSize, int key)
{
if ( array == NULL || aSize == 0 )
return -1;
int low = 0;
int high = aSize - 1;
int mid = 0;
while ( low high )
return -1;
int mid = ( low + high )/2;
if ( array[mid] == key )
return mid;
else if ( array[mid] |