您的位置:首页 > 其它

二分查找(递归与非递归)

2014-10-30 22:04 344 查看
递归的二分查找:

int search(int *a, int target, int p, int r)
{
if (p <= r)
{
int mid;

mid = (p + r) / 2;
if (*(a + mid) == target)
return 1;
else if (*(a + mid) > target)
return search(a, target, p, mid - 1);
else
return search(a, target, mid + 1, r);
}
return 0;
}


非递归的二分查找:

int search(int *a, int target, int p, int r)
{
int mid;

while (p <= r)
{
mid = (p + r) / 2;
if (*(a + mid) == target)
return 1;
else if (*(a + mid) > target)
r = mid - 1;
else
p = mid + 1;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: