二分查找
来源:互联网 发布:为什么用 php curl 编辑:程序博客网 时间:2024/05/22 08:02
两种二分查找方法,分别为循环和递归,并且添加了简单的测试用例。
#pragma#include <iostream>using namespace std;//循环方法int BinarySearch(int vec[], int length, int key){ int left = 0, right = length - 1; int mid; while (left <= right) { mid = (left + right) / 2; if (vec[mid] == key) return mid; else if (vec[mid] > key) right = mid - 1; else left = mid + 1; } return -1;}// 递归方法int BinarySearch_recursive(int vec[], int left, int right, int key){ if (left > right) return -1; int mid = (right + left) / 2; if (vec[mid] == key) return mid; else if (vec[mid] > key) return BinarySearch_recursive(vec, left, mid - 1, key); else return BinarySearch_recursive(vec, mid + 1, right, key);}void BinarySearch_test(){ int a[] = { 1, 2, 3, 4, 5 }; // testcase: non-existing number with large value cout << "large number" << endl; cout << "Iterator: " << BinarySearch(a, 5, 6) << endl; cout << "Recursive: " << BinarySearch_recursive(a, 0, 4, 6) << endl; // testcase: non-existing number with small value cout << "small number" << endl; cout << "Iterator: " << BinarySearch(a, 5, -1) << endl; cout << "Recursive: " << BinarySearch_recursive(a, 0, 4, -1) << endl; // testcase: an existing number cout << "an existing number" << endl; cout << "Iterator: " << BinarySearch(a, 5, 3) << endl; cout << "Recursive: " << BinarySearch_recursive(a, 0, 4, 3) << endl;}
2 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 生活管家app
- Tinyhttp源码分析
- c语言学习笔记17之函数
- 【面试】【MySQL常见问题总结】【03】
- Struts2入门详解
- 二分查找
- C primer plus 第九章 练习3:
- Android RelativeLayout 属性详解
- 消息机制
- 在职研究生考试结束
- C++ 循环结构 的课堂笔记以及知识点
- 2016 UESTC Training for Math(没有B H I)
- 2016SDAU课程练习三1007
- 【LQ系列】BASIC-1~BASIC-5