每天学习一个基础算法之顺序查找

目录

前言:

1、对顺序查找概念的诠释

2、顺序查找的使用场景

 3、顺序查找的实现代码

顺序查找主体(以接口函数的形式)

测试部分(主函数调用)

 调试结果


前言:

查找也是一种经常使用的算法,即根据给定的值,在一组数据中找到一个等于给定值的记录或数据元素,例如查找列车车次、学号、房间号等等。今天我们要学习的是基础的查找算法之一线性查找。

1、对顺序查找概念的诠释

顺序查找也称线性查找,即从数据结构线性表的一端开始,顺序扫描,依次将扫描的结果与给定的值进行匹配,若相等则表示查找成功;若扫描结束仍然没有与给定值匹配的结果则表示查找失败。

2、顺序查找的使用场景

顺序查找多用于查找无序的数据,若对有序数据采用顺序查找进行查找,则会大大降低程序的运行效率。

(当遇到有序数据时,我们一般会采用二分查找法,它能大大提高查找的效率,对二分查找法我会放到下一篇博客中。)

注意:若只对少量数据只需进行查找,而不进行其它操作的情况下,为单纯使用二分查找法来增加效率,而对无序数据进行排序,其实效率是远不如直接用顺序查找法进行查找的。 所以学会使用顺序查找是必要的。

 3、顺序查找的实现代码

顺序查找的代码是十分容易实现的,它本质上就是对一个数组进行遍历。本次代码仍然以函数形式呈现。

顺序查找主体(以接口函数的形式)

//线性查找法的实现
int linear_seek(int arr[], int sz, int target)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        if (arr[i] == target)
        {
            return i;
        }
    }
    return -1;
}

 实现思路:

对传入数组进行遍历(顺序扫描),若匹配结果与给定值相同,返回遍历到数的下标(索引),若遍历到最终仍然没有与给定值匹配的结果则返回-1(-1可以改为任何与查找到的返回值不冲突的值),表示数组中没有与给定值相等的数据。

测试部分(主函数调用)

#include <stdio.h>
int main()
{
    int arr[] = { 10,7,4,9,6,1,8,3,2,5 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    
    int ret = linear_seek(arr, sz, 4);
   
    if (ret != -1)
    {
        printf("下标为%d\n", ret);
    }
    else
    {
        printf("没找到!\n");
    }
    return 0;
}

 调试结果

 

每日一学,今天你又超过了百分之九十九的人。

如果本篇文章对你有帮助,请点个关注和赞吧!

若是对本文有什么独特的见解,也可以在评论区进行讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值