二分查找
2015-01-23 08:25
260 查看
1.算法
二分查找是比较常见的一种查找算法,二分顾名思义,一分为二,将有序的序列(升序或者降序)分成两部分,根据关键字的大小确定所在区间,然后继续把新区间一分为二,判断新的区间,直到找到
或者找完也没找到为止。
2.举例代码
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; int array[1001]; int Binary_Search(int array[],int low,int high,int key) { int mid; while(low<=high) { mid=(low+high)/2; if(array[mid]==key) return 1; else if(array[mid]<key) low=mid+1; else high=mid-1; } return -1; } int main() { int n,i; int key,flag; while(scanf("%d",&n)!=EOF) { memset(array,0,sizeof(array)); flag=0; for(i=0;i<n;i++) { scanf("%d",&array[i]); } sort(array,array+n); scanf("%d",&key); flag=Binary_Search(array,0,n-1,key); if(flag<0) printf("No find\n"); else printf("Yes!Find it.\n"); } return 0; }
3.算法分析
当n很大 (n>50)时, ASL(平均查找长度)≈ ㏒2(n+1)-1。相关文章推荐
- HDU 4614 Vases and Flowers (二分查找+线段树区间更新)
- 简单查找,二分查找,查找子序列
- 九度OJ 1069 查找学生信息(二分查找)
- 二分查找or线段树(借教室洛谷1083vijos1782NOIP 2012 提高组 第二天 第二题)
- 二分查找新认识
- Light oj 1138 - Trailing Zeroes (III) 【二分查找 && N!中末尾连续0的个数】
- 二分查找中的精度问题
- 二分查找(递归与非递归)
- 二分查找
- 插入,冒泡排序算法,二分查找
- 数据结构--加入二分查找的插入排序(优化)
- Monthly Expense(二分查找)
- 二分查找Binary Search
- 冒泡排序,改进型冒泡排序,插入排序,二分查找
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- JAVA二分查找源码阅读
- 二分查找
- android 二分查找
- C语言之二分查找
- LintCode python 小白-简单题-457经典二分查找问题