首页 > 技术文章 > 【新手C语言】7.基础搜索法

RetenQ 2021-09-16 19:44 原文

搜索

线性搜索

最简单、最基础、最粗暴的搜索:遍历所有数据,检索目标

    int searcher(int key , int a[] , int len){
    //这里附带说明一下,由于C语言的函数的关系,我们最好还是把数组长度直接传进来
    int ret = -1 ; 
    for (int i =0 ; i <len ; i++){
        if (key == a[i]){
            ret = i ; 
            break ; 
        }
    }
    return ret ; 
}

这个方法会查找数组中的某个数,找到了就会输出它的位置

二分搜索

不断对半分的搜索方法

    int search(int key ,  int a[] , int len){
        int left = 0 ;
        int right = len -1 ;
        //定义好边缘的那两个点
        int ret = -1 ;

        while(right > left){
            int mid = (left+right)/2 ;
            if(a[mid] == k){
                ret = mid ; 
                break ;
                //如果找到了就设置ret为这个值并且返回
            }else if (a[mid]>k){
                right = mid -1 ;
            }else{
                left = mid +1 ;
            }
        }
        return ret ; 
    }

不过,二分搜索运用的地方是一个已经排序好的数组 , 但是它的效率显然高于普通遍历

推荐阅读