if(mid == min && mid == max)
{
return -1;
}
將&&改為||,因為當min和max中間沒有數的時候,也是查找失敗,並且將這個if放在
if(*min == nItem)
{
return min - m_Head;
}
的後面
然後
mid = m_Head + (max - m_Head + mid - m_Head ) / 2 ;//這裏有問題
改成mid = min + (max - min)/2;
然後
mid = m_Head + (mid - min)/2;//這裏也可能有問題
也改為mid = min + (max - min)/2;
其實樓主想想,mid其實是相對min做的偏移,跟m_Head關系不大。
請參考