二分法查找(递归与非递归法)
来源:互联网 发布:网络三级分销体系 编辑:程序博客网 时间:2024/05/22 21:20
依然是某本日本教材上看到的
如果data数为n, 用二分法查找m次进行比较的情况下,查找范围小于。最终的查找范围是1的情况下,查找终了的时候有:
所以
so 二分查找的演算cost也就是时间复杂度为O(log n)
在数列中查找0-19的数是否出现
先是非递归版的程序:
#include <stdio.h>#define FOUND 1#define NOTFOUND 0int ary[]={1,2,3,4,6,7,8,10,11,14,15,18};int n=sizeof(ary)/sizeof(int);int binsearch(int x, int n, int ary[]){ int low = 0, high = n-1, mid; do { mid = (low+high)/2; if(x > ary[mid]) low = mid + 1; else high = mid - 1; } while(x!=ary[mid] && low <= high); if(x==ary[mid]) return FOUND; else return NOTFOUND;}main(){ int i; for(i=0; i<20; i++) if(binsearch(i,n,ary)==FOUND) printf("[%2d] exist\n", i); else printf("[%2d] not exist\n", i);}
结果为:
[ 0] not exist[ 1] exist[ 2] exist[ 3] exist[ 4] exist[ 5] not exist[ 6] exist[ 7] exist[ 8] exist[ 9] not exist[10] exist[11] exist[12] not exist[13] not exist[14] exist[15] exist[16] not exist[17] not exist[18] exist[19] not exist
接着是递归版的程序
#include <stdio.h>#define FOUND 1#define NOTFOUND 0int ary[] = {1, 2, 3, 4, 6, 7, 9, 10, 11, 14, 15, 18};int n = sizeof(ary)/sizeof(int);int binsearch(int x, int low, int high, int ary[]){ int mid = (low + high)/2; if(low > high) return NOTFOUND; if(ary[mid] == x) return FOUND; if(x > ary[mid]) return binsearch(x, mid+1, high, ary); else return binsearch(x, low, mid-1, ary);}int main() { int i; for(i=0; i<20; i++) if(binsearch(i, 0, n-1, ary)==FOUND ) printf("[%2d] exist\n", i); else printf("[%2d] not exist\n", i);}
结果同上
0 0
- 二分法查找(递归与非递归法)
- 二分法查找(递归和非递归)
- 二分法查找(递归和非递归)
- 二分法查找的实现 递归与非递归方法
- 二分法查找非递归算法
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找(递归与非递归)
- 二分查找法(递归与非递归方式)
- 二分法(递归和非递归)
- linux kernel ABC #1 中断环境与原子环境
- SpringMVC中的异步提交表单
- monkeytalk 启动、关闭 android应用程序 解决方法
- resizable
- UVA 1422 Processor(二分极大值极小化+优先队列)
- 二分法查找(递归与非递归法)
- fastjson null 值处理
- Tyvj专题 P1094 矩形分割
- 十个免费的 Web 压力测试工具
- win7 下安装 cent os6.3
- linux下用Apache一个IP多个网站多域名配置方法
- hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- sybase数据库安装配置
- HighCharts 详细使用及API文档说明