二分法是搜索算法中的最简单算法,其另一种称呼为折半查找法,实际上核心思想就是对一个有序数组,进行从中间分隔,然后去中间值来进行查找,如果对应所要找的数值比中间的值大,则说明搜索的数值在数组的右侧,如果小则说明在左侧,二分查找最重要的前提是所要搜索的数组数据一定要是有序的,如果是无序的话,则这个方法是行不通的,关于二分查找法的实现可以分为递归与非递归的版本,这里今天把非递归的版本源码提供给大家,很简单的思想,后续的文章还将提供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;
}
}
}
}