基于C++模板的二分查找
2014-05-02 05:04
246 查看
因为发现stl里面带了binary_search,以后可以不用给自己写了,怕自己不会写,所以自己先实现了一个二分查找。
我的这个二分查找不是返回true和false,而是返回iterator,当查找不到的时候,返回end()
我的这个二分查找不是返回true和false,而是返回iterator,当查找不到的时候,返回end()
#include <iostream> #include <vector> using namespace std; template <class BidirectionIterator, class T> BidirectionIterator binary_search(BidirectionIterator begin, BidirectionIterator end, T target) { BidirectionIterator mid, end_reserve = end, last_mid; mid = begin + (end-begin)/2; while(begin != end && mid != last_mid) { if(*mid == target) { return mid; } else if(*mid > target) { end = mid; mid = begin + (end-begin)/2; } else { begin = mid; mid = begin + (end-begin)/2; } last_mid = mid; } return end_reserve; } int main() { vector<int> v{1,2}; vector<int>::iterator itr; itr = binary_search(v.begin(),v.end(), 3); if(itr != v.end()) { cout << "Found and the position is " << itr - v.begin() << endl; } else{ cout << "Not found!" << endl; } }
相关文章推荐
- C++模板:二分查找
- 二分查找模板C++
- 《ASCE1885的源码分析》の基于冒泡排序的二分查找模板
- 《ASCE1885的源码分析》の基于冒泡排序的二分查找模板
- 二分查找c++简单模板
- 基于C++模板 单链表基本操作
- 深入理解不同的二分查找C++
- C++实现二分查找
- c++实现二分查找 递归和非递归
- 九度OJ 1533 最长上升子序列 (基于贪心和二分查找)
- 二分查找c++代码
- 二分查找C++
- 【查找】二分查找:C++递归实现与迭代实现
- 二分查找算法在C/C++程序中的应用示例
- 算法:C++实现二分查找
- [C++]LeetCode: 118 Find Peak Element (二分查找 寻找数组局部峰值)
- C++模板实现的二叉排序(查找)树
- 【C++】二分查找的递归形式和非递归形式
- 二分查找 归并排序 快排 详解C++
- 二分查找模板总结(递归与循环遍历两个版本)