18周OJ二分法查找元素并输出其位置

来源:互联网 发布:vs2015 mysql 编辑:程序博客网 时间:2024/06/05 15:43

题目描述

有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。
要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。

输入

第一行数组元素的个数n
第二行n个数组元素的值
第三行要查找的值

输出

查找的值在数组中的位置

样例输入

1010 9 8 7 6 5 4 3 2 15

样例输出

6

 

问题及代码:

#include <iostream>using namespace std;void input (int a[20],int n){    int i=0;    for(i=0; i<n; i++)    {        cin>>a[i];    }}int binsearch(int a[20],int n,int value){    int mid,low=0,high=n-1,p=-1;    while(low<=high)    {        mid=(low+high)/2;        if(a[mid]==value)        {            p=mid;            break;        }        else if(a[mid]<value)            high=mid-1;        else            low=mid+1;    }    if(p>0)        return p+1;    else        return 0;}


 

0 0
原创粉丝点击