二分查找算法-C++
2014-08-05 21:09
225 查看
二分查找
折半查找(::二分查找):前提,关键字有序,线性表顺序存储。
:思想,每次取中间记录作为比较对象
算法时间复杂度:O(logn)
时间复杂度无非就是while循环的次数!
总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数,假设你比较的只剩下最后一个数了(最糟糕的情况),即令n/2^k=1,可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示为O(log2n)
#include<iostream> #include<string> using namespace std; int BinarySearch(int *pdata,int length,int key) //假设序列是升序排列data2 { int high,low,mid; high=length-1; low=0; while (low<=high) { mid=(low+high)/2; if (key>pdata[mid]) //key大,key在右半段,mid++ ->low { low=mid+1; } else if (key<pdata[mid]) //key小,key在左半段 { high=mid-1; } else return mid; cout<<"::"<<low<<"::"<<high<<endl; } return -1; } int main() { int data[]={6,5,4,3,2,1}; int data2[]={1,2,3,4,5,6}; int data3[]={9,8,7,6,5,4,3,2,1}; int data4[]={1,2,3,4,5,6,7,8,9}; cout<<"----------------------------------"<<endl; int num=BinarySearch(data4,9,7); cout<<"It's the number of "<<num<<"in the array!"<<endl; return 0; }
相关文章推荐
- C/C++经典算法精华整理(2)-二分查找和插入查找
- C++二分查找算法之跳石头
- 二分查找算法的C/C++实现
- 二分查找算法在C/C++程序中的应用示例
- 算法:C++实现二分查找
- 算法-对分查找(二分查找)C++实现
- 算法四 二分查找 java,c,c++
- 算法-对分查找(二分查找)C++实现
- 二分查找算法的C/C++实现
- C++算法之 二分查找
- c/c++算法之正确实现二分查找
- 实用算法实现-第 5 篇 二分查找树
- C#泛型版的超级优化的快速排序算法和插入排序、二分查找算法
- c++学习札记(七)--查找对象算法
- 实用算法实现-第 5 篇 二分查找树
- 二分查找及其变形算法
- C++程序设计实验报告(八十二)---第十六周任务#3-2(学会二分查找)
- 二分查找算法递归实现
- 二分查找算法1
- c++ 实现快速排序与二分查找 源代码