首页 > 其他 > 详细

DS静态查找之折半查找

时间:2020-01-12 17:02:44      阅读:92      评论:0      收藏:0      [点我收藏+]

题目描述

给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始

要求使用折半查找算法

输入

第一行输入n,表示队列有n个数据
第二行输入n个数据,都是正整数,用空格隔开
第三行输入t,表示有t个要查找的数值
第四行起,输入t个数值,输入t行

输出

每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error

 

样例输入

8 11 22 33 44 55 66 77 88 3 22 88 99

样例输出

2 8 error

提示

#include<iostream>
using namespace std;
int halfFind(int *array,int low,int high)
{
    while(low<=high)
    {
        int mid=(low+high)/2;
        if(array[0]==array[mid])
            return mid;
        else if(array[0]>array[mid])
            low=mid+1;
        else if(array[0]<array[mid])
            high=mid-1;
    }
    return 0;
}
 
int main()
{
    int n;
    cin>>n;
    int *array=new int[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>array[i];
    }
    int num;
    cin>>num;
    while(num--)
    {
        cin>>array[0];
        int result=halfFind(array,1,n);
        if(result!=0)
            cout<<result<<endl;
        else
            cout<<"error"<<endl;
    }
    delete []array;
    return 0;
}

DS静态查找之折半查找

原文:https://www.cnblogs.com/SZU-DS-wys/p/12182953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!