经典算法之顺序查找(Sequential Search)

这篇具有很好参考价值的文章主要介绍了经典算法之顺序查找(Sequential Search)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sequential_search 函数,数据结构与算法,算法,java,开发语言

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

顺序查找

什么是顺序查找呢?顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。简单来说,就是给定一个数值,然后在给定的序列中按顺序依次与给定值比较,若相等则查找成功,反之失败!

一、实现思路

顺序查找就是遍历给定的整个序列,逐个元素与给定值比较,若某个元素和给定值相等,则查找成功。如果直到最后一个元素和给定值比较都不相等,则查找失败。

二、代码实现

题目描述:给定一个整数数组 nums 和一个整数目标值 target ,请在数组中找到 target ,并返回其下标。

public class SequentialSearch {
    public static void main(String[] args) {
        int[] nums = {12,15,54,85,25,64,54};
        Scanner sc = new Scanner(System.in);
        System.out.println("输入要查找的数据:");
        int target = sc.nextInt();
        int i = search(nums, target);
        if(i != -1){
            System.out.println("查找成功,该元素的下标为" + i);
        }else{
            System.out.println("查找失败!");

        }
    }

    /**
     * 顺序查找
     * @param array
     * @param key
     * @return
     */
    static int search(int[] array,int key){
        for (int i = 0;i < array.length;i++){
            if (array[i] == key){
                return i;
            }
        }
        return -1;
    }
}

三、算法分析

3.1 时间复杂度分析

使用顺序查找在含有 n 个数据的序列中查找目标值,最理想的状态是目标值位于序列第一位,只需比较一次就找到目标值,此时的时间复杂度为O(1);而最差的情况就是需要比较 n 次,也就是比较完序列中所有的数据,才找到目标值或者说不存在目标值,此时的时间复杂度为O(n)。

查找失败时,需要比较 n + 1 次, 时间复杂度我们都会将结果去掉常数项,所以该算法的时间复杂度为O(n)。

3.2 空间复杂度分析

顺序查找是对序列顺序的比较,没有额外的空间,所以空间复杂度为O(1)。

3.3 优缺点分析

优点:算法简单,对表结构无任何要求,既适用于顺序结构,也适用于链式结构。

缺点:平均查找次数较多,查找效率低,所以当n很大时,不建议使用顺序查找。

写在最后

学习算法,不仅能让自己思维能力更上一个台阶,也能为自己打下坚实的基础,成为IT行业的高端人才,而不是一直停留在低水平的体力编程层次。

sequential_search 函数,数据结构与算法,算法,java,开发语言文章来源地址https://www.toymoban.com/news/detail-686071.html

到了这里,关于经典算法之顺序查找(Sequential Search)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 排序算法:顺序查找

    简介 顺序查找(也称为线性查找)是一种 简单直观 的搜索算法。 按照顺序逐个比较列表或数组中的元素,直到找到目标元素或搜索完整个列表。 应用场景 数据集比较小,无需使用复杂的算法。 数据集没有排序,不能使用二分查找等基于有序数据集的算法。 需要在数据集

    2024年04月27日
    浏览(30)
  • 数据结构与算法之查找: 顺序查找 (Javascript版)

    顺序查找 思路 遍历数组 找到跟目标值相等元素,就返回它的下标 没有找到,返回-1 算法实现 总结 非常低效,算是入门搜索 时间复杂度:O(n) 对于数组结构或链表结构而言,没什么太多可说的

    2024年02月05日
    浏览(39)
  • 【LangChain】顺序(Sequential)

    基础 【LangChain】LLM 【LangChain】路由(Router) 【LangChain】顺序(Sequential) 我们调用语言模型后的下一步,一般都是对语言模型进行一系列调用。也就是我们想要获取一个调用的输出并将其用作另一个调用的输入。 在本笔记本中,我们将通过一些示例来说明如何使用顺序链来执行此

    2024年02月13日
    浏览(38)
  • 顺序表和链表对应的经典算法

    目录 一,移除元素 二,合并两个有序数组 三,环形链表的约瑟夫问题 四,链表的中间节点 五,合并两个有序链表 六,反转链表 七,移除链表元素 一,移除元素 思路:定义一个循环遍历数组,如果遇到的不是val就记录下来这个元素,如果不是就跳过 定义两个指针,一个用

    2024年02月21日
    浏览(30)
  • c语言经典算法—二分查找,冒泡,选择,插入,归并,快排,堆排

             1、前提条件:数据有序,随机访问;          2、实现:递归实现,非递归实现          3、注意事项:                 循环退出条件:low =high,low = high.说明还有一个元素,该元素还要与key进行比较                 mid的取值:mid=(low + high)/2;mid = l

    2024年02月05日
    浏览(35)
  • 二叉查找树(binary search tree)(难度7)

    C++数据结构与算法实现(目录) 答案在此:二叉查找树(binary search tree)(答案) 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节点1 (3)删除叶子节点1 删除有两个孩子的节点z 分成下面几个步骤进行: 1 找到

    2024年02月10日
    浏览(33)
  • 【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴 们点赞、关注! class   Solution :      def   mySqrt ( self ,  x :   int )   -   int :       

    2024年02月04日
    浏览(53)
  • leetcode分类刷题:二分查找(Binary Search)(四、基于值域的数组/矩阵类型)

    基于值域的二分法与基于定义域的题型不同,它的目标是从一“ 特殊排序序列 ”中确定“第k个元素值”,而不像基于定义域的题型是从排序序列中找小于等于特定target值的第一个索引;同时,针对“特殊排序序列”,往往需要 嵌套使用双指针 法进行操作,进一步增加了对

    2024年02月11日
    浏览(42)
  • C语言--顺序查找、折半查找

    顺序查找(sequential search)就是按照 数组 的顺序一 一比较数组中的元素的值和所查找的值。如下图表所示,遍历数组进行比较。若找到,则break跳出循环。 a[0] a[1] a[2] a[3] a[4] 9 12 22 13 34 22==9? 22==12? 22==22?              折半搜索(英语:half-interval search),也称二分搜索、

    2024年02月07日
    浏览(36)
  • 查找:线性表的C语言代码实现(顺序查找、折半查找)

    一、线性表结构 两个类的定义 二、线性表的初始化以及根据输入的元素建立线性表 1.线性表的初始化,初始化一个空的线性表 2.根据用户需求,向线性表中添加元素  三、顺序查找  Search1函数(没有设置哨兵,需要比较两次) 四、顺序查找(设置哨兵,不用再比较是否会越

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包