二分法查找的C++实现
2016-03-10 15:45
302 查看
二分法查找,简单来说就是每次去一个有序数列的中间数,时间复杂度为O(n),然后和目标值比对,如果不是的话,大的就在中间值的右边查找,小的话就在中间值的左边查找,时间复杂度为O(logn)。是最初级的算法,用C++实现。
#include <iostream> using namespace std; int SearchK(int *Arr,int low,int high,int k)//在有序数列中返回t的序号p是数列的起点,q是终点 { int mid; while (low<high)//稳定版,考虑数组中不存在k的情况 { mid = (low + high) / 2; if (Arr[mid] ==k) { return mid + 1; } else { if (Arr[mid] < k)//右边查找 { low = mid + 1; } else { high = mid - 1; } } } cout << "未找到" << endl; return -1;//没找到 } int main() { int p[] = { 1, 2, 3, 4, 5, 6, 7 }; cout<<SearchK(p, 0, 6, 6)<<endl; cout << SearchK(p, 0, 6, 8)<<endl; system("pause"); return 0; }
相关文章推荐
- PHP中调用C/C++制作的动态链接库的教程
- 5.C语言之函数
- 我们编程吧 之 C++学习手册v0.1
- C++stringstream的clear()清空误区
- c++静态函数
- SYDZ 辗转相除法的原理与实现
- LeetCode: Find Peak Element
- C++近期常见问题面试总结(一)
- C++构造函数和析构函数的总结
- c++ 单例模式
- 高精度运算
- 常用工具类之C++线程安全集合类
- Concurrency::task(C++)
- c++第一次上机报告
- 第二次c++上机
- C++ CopyFile函数的用法
- C++中的find函数
- 快速排序的Java语言与C语言实现
- 使用Visual Studio编译MYSQL CONNECTOR C/C++(MYSQLCPPCONN)
- 【c++】菱形虚拟虚拟继承模型探索