public int BinRankSearch(int Key)
{
int low = 0, high = R.Length- 1, mid;
while (low <= high)
{
mid = (low + high) / 2;
if (R.Data[mid].Rank == Key)
return mid; if (Key<R.Data[mid].Rank) high= mid - 1; else low = mid + 1;
}
return -1;
}
上面的代码,我调试的时候,看到只要符合了return mid,就不会执行下面的事return -1,但是我想不通,为什么不会呢,这个应该总是返回-1的啊,while执行完了,就会执行下一条语句的啊
{
int low = 0, high = R.Length- 1, mid;
while (low <= high)
{
mid = (low + high) / 2;
if (R.Data[mid].Rank == Key)
return mid; if (Key<R.Data[mid].Rank) high= mid - 1; else low = mid + 1;
}
return -1;
}
上面的代码,我调试的时候,看到只要符合了return mid,就不会执行下面的事return -1,但是我想不通,为什么不会呢,这个应该总是返回-1的啊,while执行完了,就会执行下一条语句的啊
return mid; else if (Key<R.Data[mid].Rank) high= mid - 1; else low = mid + 1;
{
int low = 0, high = R.Length- 1, mid;
if(low <= high)
{
mid = (low + high) / 2;
if (R.Data[mid].Rank == Key)
return mid; else if (Key<R.Data[mid].Rank) high= mid - 1; else low = mid + 1;
}
else
return -1;
}