EOJ 3178 二分查找

原创 2017年01月03日 20:53:05
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define max 1000
int a[max];
int bisect(int a[],int n, int v)//定义二分查找函数
{
    int i,j,m;
    i=0;//i为开始
    j=n-1;//j为结束
    while(i<=j)
    {
        m=(i+j)/2;//m为i和j中间
        if(v==a[m])//如果刚好查找到,返回
            return m;
        if(v<a[m])//如果v小于中间的值,改变j,继续在小的那一半查找
            j=m-1;
        else i=m+1;//否则在大的那一半查找
    }
    return -1;
}
int main()
{
    int n,v;
    while(scanf("%d",&n)!=EOF)
    {
        memset(a,0,sizeof(a));//初始化数组
        int i;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        scanf("%d",&v);//要查找的元素
        int x=bisect(a,n,v);
        printf("%d\n",x);
        
    }
}



每次查找都尝试将此次的中间值和要查找的值做比较,如果小于中间值,则继续在较小的那一边查找,如果大于中间值,则改变i,在较大的一边查找。
                    

【算法-查找之二】二分查找

算法-查找之二二分查找           顺序查找【算法-查找之一】顺序查找是最简单的查找策略,易于分析,适用于小规模数据。如果数据规模很大时,顺序查找的表现就不尽人意,此时需要寻找一...
  • Jiangweihll
  • Jiangweihll
  • 2014年04月15日 10:34
  • 3274

Python实现二分查找算法

二分查找二分查找又叫折半查找,二分查找应该属于减治技术的成功应用。所谓减治法,就是将原问题分解成若干个子问题后,利用了规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间的关系。 二分查找...
  • SeeTheWorld518
  • SeeTheWorld518
  • 2015年08月21日 23:03
  • 4657

二分查找算法(递归与非递归两种方式)

首先说说二分查找法。 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标。 采用非递归方式完成二分查找法。java代码如...
  • lovesummerforever
  • lovesummerforever
  • 2014年04月27日 15:44
  • 84402

快速排序和二分查找

  • 2015年06月10日 17:16
  • 48KB
  • 下载

二分查找算法

  • 2015年02月02日 11:51
  • 334B
  • 下载

二分查找札记

  • 2015年03月19日 13:38
  • 111KB
  • 下载

二分查找算法和冒泡排序算法

  • 2015年04月22日 11:27
  • 942KB
  • 下载

java数组二分查找

  • 2015年11月02日 16:56
  • 2KB
  • 下载

二分查找_测试

  • 2016年12月12日 15:55
  • 149KB
  • 下载

二分查找算法

  • 2014年04月15日 05:21
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EOJ 3178 二分查找
举报原因:
原因补充:

(最多只允许输入30个字)