首页 > 代码库 > 二分查找(递归与非递归)
二分查找(递归与非递归)
递归的二分查找:
1 int search(int *a, int target, int p, int r) 2 { 3 if (p <= r) 4 { 5 int mid; 6 7 mid = (p + r) / 2; 8 if (*(a + mid) == target) 9 return 1;10 else if (*(a + mid) > target)11 return search(a, target, p, mid - 1);12 else13 return search(a, target, mid + 1, r);14 }15 return 0;16 }
非递归的二分查找:
1 int search(int *a, int target, int p, int r) 2 { 3 int mid; 4 5 while (p <= r) 6 { 7 mid = (p + r) / 2; 8 if (*(a + mid) == target) 9 return 1;10 else if (*(a + mid) > target)11 r = mid - 1;12 else13 p = mid + 1;14 }15 16 return 0;17 }
二分查找(递归与非递归)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。