今天突然想起每天复习一个之前的算法 ,也是工作中可能常用到的一些算法。多会一些东西总归是好的。今天下来写一下二分查找。
最好的时间复杂度就是 o(1) 一次就找到
最差的时间复杂度就是o(log2 N)+1 每次进行一个除二的操作直到最后一次。所有时间复杂度是对2取对数。
平均时间复杂度就是对各种情况次数佳和然后除以总个数 经过计算
平均的时间复杂度是log n。
代码如下
#include <stdio.h>
int serch(int num[],int a,int n)
{
int middle;
int left = 0;
int right = n;
middle = (left +right)/2;
while(left <= right)
{
if( num[middle] == a )
return true; //返回值是是否找到了 该数 如果需要返回在哪个位置返回middle即可
if(num[middle]<a)
left = middle + 1;
else
right = middle - 1;
middle = (left +right)/2;
}
return false;
}
int main()
{
int a[100];
int n;
int m;
int test;
scanf("%d",&n);
for(m = 0;m<n;m++)
{
a[m] = m;//为了方便直接进行了简单的赋值
}
scanf("%d",&m);
test = serch(a,m,n);
printf("test = %d\n",test);
getchar();
getchar();
return 0;
}
算法学习 : 二分查找
最新推荐文章于 2021-06-19 18:01:19 发布