二分查找-递归和非递归

来源:互联网 发布:万得资讯软件 编辑:程序博客网 时间:2024/05/19 09:15

1、非递归实现

int search(int a[], int n, int key){int h = 0;int t = n-1;int m;while(h < t){int m = (h + t)>>1;if(a[m] == key){return m;}else if(a[m] > key){t = m-1;}else{h = m+1;}}return -1;}

2、递归实现

int search(int a[], int h, int t, int key){if(h < t){int m = (h + t)/2;if(a[m] == key)return m;else if(a[m] > key){return (search(a, h, m-1, key));}else{return (search(a, m+1, t,key));}}return -1;}
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。假设其数组长度为n,其算法复杂度为o(log(n))


0 0
原创粉丝点击