折半查找

来源:互联网 发布:mac文件储存位置 编辑:程序博客网 时间:2024/06/01 09:54

实现折半查找。要求查找给定的值在数据表中相应的存储位置。本题目假定输入元素均按非降序输入。 

输入

输入包含若干个测试用例,第一行为测试用例个数k。每个测试用例占3行,其中第一行为元素个数n,第二行为n个元素值,即数据表中的元素,第三行为需要查找的元素。

输出

对每一测试用例,分别用一行输出两个值,分别表示相应的位置和查找次数,用空格隔开。如果查找不成功,则位置表0表示。 

样例输入

1
5
1 2 4 7 9
4

样例输出

3 1


#include<stdio.h>int main(){    int a[100000],i,j,k,l,n,m,x;    int start,end,mid;    scanf("%d",&n);    while(n--)    {        scanf("%d",&m);        for(i=0;i<m;i++)            scanf("%d",&a[i]);        scanf("%d",&x);        start=0;end=m-1;        j=0;        while(start<=end)        {            j++;            mid=(start+end)/2;            if(a[mid]<x)                start=mid+1;            else if(a[mid]>x)                end=mid-1;            else break;        }        printf("%d %d\n",mid+1,j);    }    return 0;}


0 0
原创粉丝点击