二分查找
来源:互联网 发布:装饰公司网络销售 编辑:程序博客网 时间:2024/06/14 15:47
#include <stdio.h>int BinSearch_Recursion(int Array[],int low,int high,int key);//递归方法int BinSearch_Recursion(int Array[],int len,int key){ //如果传入的数组为空或者数组长度<=0那么就返回-1。防御性编程 if(Array==NULL||len<=0) return -1; return BinSearch_Recursion(Array,0,len-1,key);}int BinSearch_Recursion(int Array[],int low,int high,int key) /*传入参数分别是找到的数组Array,数组起始位置,数组结束位置,要找的数组*/{ if (low<=high) { //int mid = (low+high)/2; int mid = low + (high - low)/2;//为了防止变量溢出 if(key == Array[mid]) return mid; else if(key<Array[mid]) return BinSearch_Recursion(Array,low,mid-1,key); else if(key>Array[mid]) return BinSearch_Recursion(Array,mid+1,high,key); } else return -1; } //非递归方法int BinSearch(int Array[],int len,int key) /*传入参数分别是数组地址Array,数组长度len,要找的数据key 返回值为key的位置*/{ //防御性编程if(Array==NULL || len <= 0)return -1; int low=0,high=len-1; int mid; while (low<=high) { //mid = (low+high)/2; mid = low + (high - low)/2;//为了防止变量溢出 if(key==Array[mid]) return mid; if(key<Array[mid]) high=mid-1; if(key>Array[mid]) low=mid+1; } return -1; } int main(void){int a[6]={0,5,20,30,88.102};int len = sizeof(a)/sizeof(a[0]);int locate=0,locate_recursion;locate = BinSearch(a,len,88);locate_recursion =BinSearch_Recursion(a,len,20);//根据参数个数选择执行的函数printf("%d %d\n",locate,locate_recursion);return 0;}
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 深入了解scanf/getchar/gets/cin等函数
- 版本控制工具(CVS、SVN、GIT)简介
- NYOJ 904 search
- hdu 5440 Clock Adjusting(双向bfs)
- Swift学习- 下标脚本(十二)
- 二分查找
- HashMap与HashTable面试宝典
- [c++]无锁队列
- POJ 3984:迷宫问题 bfs+递归输出路径
- 解题报告 之 ZOJ 3829 Known Notation
- C语言实现的猜数字小游戏(主要是对于自定义函数的运用)
- ip转换为纯数字(如何用数字表示ip?)
- LINUX下GDB调试
- Java编程思想作者引用的10大Java书籍选登