二分查找是一种高效的查找方法,但只适用于顺序表。
假定有一个升序数组,二分查找主要思路:先把待找x与数组中间的元素y比较,相等则查找成功,否则将数组对半分为左右两个子表,若x<y,则把x与左子表中间元素比较,若相等则查找成功;若x>y,则把x与左子表中间元素比较,若相等则查找成功;否则按上述方法继续查找,直至查找到元素,或者超出边界
二分查找:
int binarySearch(int iEle, PT_Array ptArray)
{
int iLeft, iRight, iMid, iLoc = -1;
iLeft = 1;
iRight = ptArray->iTop;
iMid = (iLeft + iRight) / 2;
while (iLeft <= iRight)
{
if (ptArray->aiArray[iMid] == iEle)
{
iLoc = iMid;
printf("Find the %d in index %d\r\n", iEle, iLoc);
break;
}
else if (ptArray->aiArray[iMid] > iEle)
{
iRight = iMid - 1;
iMid = (iLeft + iRight) / 2;
}
else
{
iLeft = iMid + 1;
iMid = (iLeft + iRight) / 2;
}
}
if (iLeft > iRight)
printf("Not found\r\n");
return iLoc;
}
本文深入讲解了二分查找算法,一种高效查找方法,特别适用于升序数组。文章详细阐述了二分查找的基本思想,通过与数组中间元素的比较,逐步缩小查找范围,直至找到目标元素或确定元素不存在。
543

被折叠的 条评论
为什么被折叠?



