二分查找
2017-12-08 21:44
120 查看
#include <iostream> #include <cstdio> /*非递归*/ int biSerch(int a[],int left,int right,int flag){ int mid; while(left<=right){ mid = (left+right)/2; if(a[mid]==flag){ return mid; } else if(a[mid]>flag){ //右端点左移 right = mid-1; } else{ left = mid+1; //左端点右移 } } return -1; //没找到 } /*递归算法*/ int biSerch2(int a[],int left,int right,int flag){ if(left<=right){ int mid; mid = (left+right)/2; //折半中间点下标 if(a[mid]>flag){ biSerch2(a,left,mid-1,flag); //往左边找 } else if(a[mid]<flag){ biSerch2(a,mid+1,right,flag); //往右边找 } else{ return mid; } } return -1; } int main(int argc, char** argv){ int a[] = {1,3,5,6,7,8,45,56}; int x; scanf("%d",&x); if(biSerch (a,0,sizeof(a)/sizeof(a[0])-1,x)!=-1){ printf("找到元素:%d\n",x); } else{ printf("查找失败!\n"); } int y; scanf("%d",&y); if(biSerch2(a,0,sizeof(a)/sizeof(a[0])-1,y)!=-1){ printf("找到元素:%d\n",y); } else{ printf("查找失败!\n"); } return 0; }
相关文章推荐
- PHP 折半查找(二分查找) 递归与非递归法
- Java实现二分查找
- ruby普通二分查找和递归二分查找
- 一维数组 冒泡排序 shell 排序 二分查找 C++
- C语言二分查找算法及实现代码
- PHP-----二维数组和二分查找
- 关于二分查找
- 【LeetCode】69. Sqrt(x) 二分查找实现开平方函数
- [POJ] 1064 Cable master (二分查找)
- 基础算法5——二分查找
- hihoCoder 1128 二分·二分查找
- poj 3636 Nested Dolls 动态更新表的二分查找
- [leetcode]二分查找总结
- 二分查找
- LeetCode-74-Search a 2D Matrix(二分查找)-Medium
- 方法 | 二分查找(折半查找)&& 小游戏 | 猜数字
- 二分查找
- 【数据结构】二分查找及它的演变——插值查找
- 二分查找——Find Peak Element
- 二分查找——C:Sacrament of the sum 解题报告