int index(int * arry, int count, int val)
{
int start , mid, end;
start = 0; end = count - 1;
int ret = -1;
while( start <= end )
{
mid = (start + end)/2;
if(val > arry[mid] )
{
start = mid + 1;
}else if(val < arry[mid])
{
end = mid - 1;
}else
{
ret = mid;
break;
}
}
if(ret == -1)
return ret;
while(mid > start)//在所有相等的数中寻找最靠前的那个数的索引返回
{
if(arry[(start + mid)/2] != arry[mid])
start = ((start + mid)/2 + mid + 1)/2;
else
mid = (start + mid)/2;
}
return mid;
}