二分法
适用场景:
【数组 中 存在AAAABBBB 若干个元素,寻找AB元素的分界点】
{A,A.... A,B,B...B},需要快速查找分界下标。
以下是代码//
int binary_search(int data[],int serachdata,int length)
{
int left = 0; int right = length;
int ret = 0; int mid = 0;
if (data[0] == serachdata)
{
mid = 0;
}
else if (data[length-1] == 0x00)
{
mid = length;
}
else{
while (left <= right)
{
mid = (right + left) / 2;
DBG("------mid=:%d\n", mid);
DBG("------left=:%d\n", left);
DBG("------right=:%d\n", right);
DBG("**********************************************\n", mid);
if (data[mid] == 0x00) //说明左侧数据全部为 00
{
left = mid + 1;
}
if (data[mid] == serachdata) //说明右侧侧数据全部为 0x66
{
right = mid - 1;
}
}
}
return mid;
}