码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 经典算法——顺序查找


    😁学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰👍

    活动地址:CSDN21天学习挑战赛⭐️⭐️⭐️

    文章目录

      • 顺序查找
      • 算法效率
      • 实现思路
      • 代码实现
      • 效率分析
        • 时间复杂度
        • 空间复杂度
      • 顺序查找的优缺点

    顺序查找

    顺序查找也叫线性查找

    查找过程:从列表中的第一个元素开始,逐个元素进行比较,如果找到相等的元素,则 查找成功 ,如果直至表中最后一个记录数与目标值都不相等,则表示 查找失败 。
    顺序查找算法适用于绝大多数场景,既可以在有序序列中查找目标元素,也可以在无序序列中查找目标元素。

    算法效率

    算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。

    实现思路

    给定一个查找表

    在这里插入图片描述

    设:查找的目标值为67,步骤如下

    1. 从表中的第一个元素开始比较,51 != 67,指针右移

    在这里插入图片描述

    1. 指针指向第二个元素,也就是4, 4 != 67,指针右移

    在这里插入图片描述

    1. 指针指向第三个元素,也就是12,12 != 67,指针右移

    在这里插入图片描述

    1. 指针指向第四个元素,也就是67,67 == 67,查找成功

    在这里插入图片描述

    代码实现

    Java代码实现

    定义顺序查找方法

     private int orderFind(int number) {
            //定义一个数组
            int[] arr = {51, 4, 12, 67, 45, 23, 68, 32};
    
            //定义数组下标
            int i = 0;
            //便利整个数组
            while (i < arr.length) {
                //如果当前元素和number相等,直接返回当前的下标
                if (arr[i] == number) {
                    return i;
                }
                //每循环一次,下标+1
                i++;
            }
            //如果最后未找到,那么返回一个标识 -1
            return -1;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    调用方法

    // 定义要查找的数字
    int findNum = 67;
    // 顺序查找 67这个数字在数组中的位置
    int i = orderFind(findNum);
    //如果结果不为-1,那么说明在数组中匹配到了相等的元素
    if(i != -1){
        System.out.println("在数组中匹配到数字,下标为:" + i );
    }else{
        System.out.println("在数组中未找到");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    效率分析

    时间复杂度

    • 最坏的情况

    最坏的情况就是完整的遍历了整个集合,也并未找到目标的key,此时循环被完整的执行,循环执行次数与n相关,所以时间复杂度为O(n)。

    • 最好的情况

    最好的情况就是第一次就找到了元素,此时的时间复杂度为常数级O(1)。

    • 平均情况

    综合两种情况,顺序查找的时间复杂度为O(n),属于查找较慢的算法。

    空间复杂度

    由于算法不会改变原有的元素集合,只需要一个额外的变量控制索引变化,所以空间复杂度为常数级:O(1)

    顺序查找的优缺点

    1)缺点:查找效率较低,特别是当待查找集合中元素较多时,不推荐使用顺序查找。
    2)优点:算法简单而且使用面广。

  • 相关阅读:
    06-CSS元素类型
    互联网Java工程师面试题·Java 总结篇·第十弹
    一文带你了解隐私 Layer1
    redis之变慢了该如何排查?
    通过数据可观测性进行价值工程和数据成本优化
    方案:餐厅饭店AI智能视频监控可视化监管系统搭建方案
    2022/9/5开始第三版接口自动化(yaml用例)测试框架(记录搭建过程)
    【前端优化 & Vue项目优化】 如何避免浏览器卡顿,实现性能优化cdn?
    Bridge Champ助力我国桥牌阔步亚运, Web3游戏为传统项目注入创新活力
    高防CDN与高防服务器:为什么高防服务器不能完全代替高防CDN
  • 原文地址:https://blog.csdn.net/weixin_43847283/article/details/126111686
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号