二分法查询
1.适用条件
二分法查找适用于数据量较大时,但是数据需要先排好顺序。
2.思想
二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。
3.时间复杂度
最坏情况查找最后一个元素(或者第一个元素)Master定理T(n)=T(n/2)+O(1)所以T(n)=O(log2n)
最好情况查找中间元素O(1)查找的元素即为中间元素(奇数长度数列的正中间,偶数长度数列的中间靠左的元素)
4.空间复杂度
S(n)=n
int a[]={2,3,5,6,7,8,9,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60};
int l=sizeof(a)/sizeof(a[0]);
int serach(int key)
{
int left=0;
int right=l-1;
while(left<=right)
{
int mid=(left+right)/2;
if(a[mid]==key)
{
return mid;
}
else if(a[mid]<key)
{
left=mid+1;
}
else
{
right=mid-1;
}
}
}