zoukankan      html  css  js  c++  java
  • 二分

    二分

    以前高中数学求零点时提到了二分法
    和那个差不多的
    就是平均分成两份,然后看满足条件的那个在哪一份中
    再把那一份再平均分,再看满足条件的那个再哪一份中
    以此类推

    二分适用于
    1、具有单调性的题目
    2、可判断的题目
    3、会减少复杂度

    例:在数组a[10]={1,3,5,7,9,10,11,17,18,19}中
    判断一个数在不在数组中
    可以用循环判断,也可以用标记法
    但是如果查找的数组比较大,效率就不怎么行了
    查找
    18在不在数组中
    下面上代码

    #include <stdio.h>
    int efcz(int x,int a[])
    {
        int L=0,R=9,mid;
        while(L<=R)
        {
            mid=(L+R)/2;
            if(x<a[mid])
                R=mid-1;
            if(x>a[mid])
                L=mid+1;
            if(x==a[mid])
                return 1;
        }
        return 0;
    }
    int main()
    {
        int a[10]={1,3,5,7,9,10,11,17,18,19},i,x;
        printf("输入要查找的数:");
        while(~scanf("%d",&x))
        {
            if(efcz(x,a))
                printf("存在该数
    ");
            else
                printf("不存在该数
    ");
        }
        return 0;
    }
  • 相关阅读:
    C#关系运算符
    C#逻辑运算符
    C#位运算符
    C#赋值运算符
    C#条件运算符(?:)
    C#自增运算符(++)
    C#自减运算符
    C# sizeof运算符
    C# checked运算符
    最大值最小值
  • 原文地址:https://www.cnblogs.com/yanhua-tj/p/13996587.html
Copyright © 2011-2022 走看看