码迷,mamicode.com
首页 > 其他好文 > 详细

二分查找

时间:2018-11-10 16:49:27      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:arc   代码   clu   \n   key   printf   bin   amp   color   

分治法的基本思想:

将一个问题规模为n的问题分解成k个规模较小的子问题,这些子问题互相独立且与原问题相同。用递归的方式解这些子问题,将子问题的解合并得到原问题的解。

 

二分查找:

就是将一个序列(排好序的)分成两部分,如果a[mid]==key就返回mid,若大于就搜索左边,否则搜索右边。

 

题目描述:

第一行输入n;

第二行输入n个整数;

第三行输入m;

然后输入m个整数,分别判断该数是否在n个整数中,若在输出Yes,否则输出No;

 

代码实现如下:

#include <stdio.h>

int n;

int binarySearch(int a[],long key)
{
    int left = 0;
    int right = n;

    while(left<=right)
    {
        int mid = (left+right)/2;
        if(a[mid]==key)
        {
            return mid;
        }
        else if(a[mid]<key)
        {
            left = mid+1;
        }
        else
        {
            right = mid - 1;
        }
    }
    return -1;
}

int main()
{
    int array[10001];
    int i;
    int m;
    long  q;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&array[i]);
    scanf("%d",&m);
    while(m--)
    {
        scanf("%ld",&q);
        if(binarySearch(array,q)>=0)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

 

二分查找

标签:arc   代码   clu   \n   key   printf   bin   amp   color   

原文地址:https://www.cnblogs.com/kmxojer/p/9939619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!