二分查找初步

来源:互联网 发布:网络神曲排行榜2016 编辑:程序博客网 时间:2024/05/21 15:04

找出一组数据中某个元素所在的位置。若找不到则输出-1.


#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include<algorithm>#include<vector>#include<string>#include<sstream>using namespace std;int ans;int que;struct node{    int x;    int y;}num[100];bool cmp(node a, node b){    return a.x<b.x;}int bsearch( node *p, int x, int y, int v ){    int m;    while( x<y )    {        m = x + ( y-x )/2;        if( p[m].x==v )            return p[m].y;        else if( p[m].x>v )            y = m;        else            x = m+1;    }    return -1;}int main(){    int n;    while( scanf("%d", &n)==1 )    {        for(int i=1; i<=n; i++)            {                scanf("%d", &num[i].x);                num[i].y=i;            }        sort( num+1, num+n+1, cmp );        scanf( "%d", &que );        int ans = bsearch( num, 1, n, que );        printf( "%d\n\n", ans );    }    return 0;}










0 0
原创粉丝点击