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

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

顺序查找

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


一、实现思路

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


二、代码实现

题目描述:给定一个整数数组 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行业的高端人才,而不是一直停留在低水平的体力编程层次。


相关文章
|
3月前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
31 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
3月前
|
机器学习/深度学习 算法 文件存储
【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search
本文提出了一种名为渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS)的方法,它使用顺序模型优化策略和替代模型来逐步搜索并优化卷积神经网络结构,从而提高了搜索效率并减少了训练成本。
52 9
|
3月前
|
存储 算法 调度
基于和声搜索算法(Harmony Search,HS)的机器设备工作最优调度方案求解matlab仿真
通过和声搜索算法(HS)实现多机器并行工作调度,以最小化任务完成时间。在MATLAB2022a环境下,不仅输出了工作调度甘特图,还展示了算法适应度值的收敛曲线。HS算法模拟音乐家即兴创作过程,随机生成初始解(和声库),并通过选择、微调生成新解,不断迭代直至获得最优调度方案。参数包括和声库大小、记忆考虑率、音调微调率及带宽。编码策略将任务与设备分配映射为和声,目标是最小化完成时间,同时确保满足各种约束条件。
|
6月前
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
86 0
|
5月前
|
存储 算法 Java
广度优先搜索(Breadth-First Search,BFS)是一种用于图的遍历或搜索的算法。
广度优先搜索(Breadth-First Search,BFS)是一种用于图的遍历或搜索的算法。
|
5月前
|
存储 算法 测试技术
数据结构学习记录——树习题-Complete Binary Search Tree(题目描述、输入输出示例、数据结构的选择、核心算法、计算左子树的规模)
数据结构学习记录——树习题-Complete Binary Search Tree(题目描述、输入输出示例、数据结构的选择、核心算法、计算左子树的规模)
77 1
|
5月前
|
人工智能 算法 Java
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。
深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树或图的算法。
|
机器学习/深度学习 算法 计算机视觉
【智能优化算法-圆圈搜索算法】基于圆圈搜索算法Circle Search Algorithm求解单目标优化问题附matlab代码
【智能优化算法-圆圈搜索算法】基于圆圈搜索算法Circle Search Algorithm求解单目标优化问题附matlab代码
【智能优化算法-圆圈搜索算法】基于圆圈搜索算法Circle Search Algorithm求解单目标优化问题附matlab代码
|
机器学习/深度学习 传感器 算法
【麻雀算法】基于自适应螺旋飞行麻雀搜索算法求解单目标优化问题附matlab代码(Adaptive Spiral Flying Sparrow Search Algorithm,ASFSSA)
【麻雀算法】基于自适应螺旋飞行麻雀搜索算法求解单目标优化问题附matlab代码(Adaptive Spiral Flying Sparrow Search Algorithm,ASFSSA)
|
算法 数据库 索引
App Inventor 2 算法之二分算法(Binary Search)实现,快速查找定位
二分算法(Binary Search)是生活中非常常用的折半算法,能解决快速查找、快速定位的问题,主要用到数学和逻辑代码块。 本示例程序演示了采用普通遍历的方式和二分的方式分别需要几次能够猜中随机给出的数字。
149 0