二分查找(Binary Search)

来源:互联网 发布:室内电子地图制作软件 编辑:程序博客网 时间:2024/05/17 05:03


算法:又称折半查找,它是一种效率较高的查找方法,当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的

基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include<math.h>#include<cstdlib>using namespace std;#include<stdio.h>#define N 3000+10int BinachrySearh(int *a,int n,int key){int left=0,right=n-1,mid=0;while(left<=right){    mid=(left+right)/2;    if(a[mid]==key) break;    else right=mid-1;}if(left>right) return -1;else return mid;}int main(){int a[100],n,m,d;while(~scanf("%d %d",&n,&m)){for(int i=0;i<n;i++)    scanf("%d",&a[i]);d=BinachrySearh(a,n,m);if(d==-1) printf("NOT FOUND\n");else printf("%d\n",d);}return 0;}



0 0
原创粉丝点击