(Day7)演算法復健運動for藍橋杯-二分
二分比較簡單,這裡主要摘一些常用的寫法:
1.找到目標數
int l,r,mid;
while(l<=r)
{
if(a[mid]==x)return mid;
else if(a[mid]<x)l=mid+1;
else r=mid-1;
}
2.找範圍內的
找小於等於y的第一個數
000000011111
while(l<=r)
{
mid=(l+r)/2;
if(a[mid]<=y)//跟用法一樣
l=mid+1;
else r=mid-1;
}//r
找大於等於x的第一個數
000000111111
while(l<=r)
{
mid=(l+r)/2;
if(a[mid]>=x)
r=mid-1;
else l=mid+1;
}//l
如果條件沒有等於就把等號去掉