【数据结构】关于二分法
二分法例:假设有一个容量为n+1开始的数组,从小到大存储了n个数(从下标1开始存储)。给定给定数m,求出数组中值为m的元素的下标,如果未找到则返回0。 分析: 以11个数进行分析。
int fun(int num[],int length,int m)
{
int left = 1,right = length-1;
//因为数组是从下标0开始length比数组最后一个元素小标大1。
while(left<=right)
{
mid = (left+right)/2;
if(num[mid]<m)
{
left=mid+1;
}
else if(num[mid]>m)
{
right=mid-1;
}
else
return mid;
}
return NOT FOUND;
}
注意:
例:假设有一个数组num[1]=1,num[2]=2,现在要找m=3。 1.看一下令left=mid或者令right=mid的情况:
2.再看一下令left=mid-1或者right=mid+1的情况:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |