二分法是搜索算法中的最簡單算法,其另一種稱呼爲折半查找法,實際上核心思想就是對一個有序數組,進行從中間分隔,然後去中間值來進行查找,如果對應所要找的數值比中間的值大,則說明搜索的數值在數組的右側,如果小則說明在左側,二分查找最重要的前提是所要搜索的數組數據一定要是有序的,如果是無序的話,則這個方法是行不通的,關於二分查找法的實現可以分爲遞歸與非遞歸的版本,這裏今天把非遞歸的版本源碼提供給大家,很簡單的思想,後續的文章還將提供BFS與DFS的查找算法。
int BinaryFind(int Buffer[], int Left_, int Right_, int FindKey)
{
while(Left_ < Right_)
{
int mid = (Right_ + Left_)/2;
if (Buffer[mid] == FindKey)
{
return mid;
}
else
{
if(Buffer[mid] > FindKey)
{
Right_ = mid-1;
}
else
{
Left_ = mid+1;
}
}
}
}