while(low<high)
{
mid=(low+high)/2;
if(dtat[mid]>=traget)
high=mid;
else
low=mid+1;
}
//这里不能用
if(data[mid]<=traget)
low=mid;
else
high=mid-1;
如果这样写的话,当low和 high相邻,且low恰好存储的就是小于等于traget的值的时候,由于mid=(low+high)/2=low,再把mid赋值给low的时候陷入死循环。
二分查找在有序数组寻找第一个大于等于目标元素的下标
最新推荐文章于 2024-08-14 18:20:25 发布