zoukankan      html  css  js  c++  java
  • 二分法查找

    二分法又称折半查找,属于有序查找算法,二分法查找必须采用顺序存储结构,元素必须是有序的,如果元素无序,则先进行排序再查找。

    原理:先找到中间元素,用待查找元素与其比较,可得出该元素大于中间元素,或小于中间元素,由此可以得出方位,进行下一步查找,如果等于中间元素,则返回中间元素下标,如果最后没有查找到该元素,则返回-1,查找到了该元素,则返回对应下标,由此得出该元素的位置。

    此方法时间复杂度为O(logn)。

    下面是简陋的二分法查找代码。

    #include<stdio.h>
    #include<stdlib.h>
    int search(int n,int *a,int end)
    {
        int i,mid,begin;
        begin=0;
        mid=(begin+end)/2;
        if(n>a[mid]){
            for(i=mid;i<end+1;i++){
                if(a[i]==n){
                    return i;
                }
            }
        }else if(n==a[mid]){
            return mid;
        }else{
            for(i=mid;i>=0;i--){
                if(a[i]==n){
                    return i;
                }
            }
        }
        return -1;
    }
    
    int main()
    {
        int* a;
        int i,j,l,m=1;
        a=(int*)malloc(10*sizeof(int));
        for(i=0;i<10;i++){
            a[i]=m++;
        } 
        scanf("%d",&j);
        l=search(j,a,10);
        if(l==-1){
            printf("不含此元素");
        }else{
            printf("a[%d]=%d",l,j);
        }
        return 0;
    }
  • 相关阅读:
    9、Python 数据分析-2012美国大选献金项目
    Java 多线程
    高并发和多线程的关系
    什么是同一网段
    什么是CPU密集型、IO密集型?
    Ubuntu的which、whereis、locate和find命令
    python装饰器
    python 面试题
    Gsview裁剪EPS文件
    LaTeX pdf转eps格式
  • 原文地址:https://www.cnblogs.com/woju/p/12505013.html
Copyright © 2011-2022 走看看