经典算法——顺序查找

简介: 经典算法——顺序查找

顺序查找


顺序查找也叫线性查找


查找过程:从列表中的第一个元素开始,逐个元素进行比较,如果找到相等的元素,则 查找成功 ,如果直至表中最后一个记录数与目标值都不相等,则表示 查找失败 。

顺序查找算法适用于绝大多数场景,既可以在有序序列中查找目标元素,也可以在无序序列中查找目标元素。


算法效率


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


实现思路


给定一个查找表

1673453294834.jpg

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


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

1673453302676.jpg

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

1673453319649.jpg

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

1673453327072.jpg

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

1673453334672.jpg


代码实现


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;
    }


调用方法

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


效率分析


时间复杂度


最坏的情况

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


最好的情况

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


平均情况

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


空间复杂度


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


顺序查找的优缺点


1)缺点:查找效率较低,特别是当待查找集合中元素较多时,不推荐使用顺序查找。

2)优点:算法简单而且使用面广。

相关文章
|
4月前
|
算法 索引
算法思想总结:二分查找算法
算法思想总结:二分查找算法
|
算法 C++
【基础算法】顺序查找 折半查找 & C++实现
顺序查找比较简单,就是顺序遍历我们所要查找的内容,判断并找出相应的目标数。比较简单,在这里不用图形说明程序实现具体情况。当面临大量数据时,顺序查找的效率非常低,时间复杂度大,所以会采用其他方法进行查找。
132 0
【基础算法】顺序查找 折半查找 & C++实现
|
机器学习/深度学习 存储 算法
折半查找算法
我们常常需要对数据进行查找,修改,查找数据有许多方法,我们先看看最简单的顺序查找
|
存储 算法 Windows
【趣学算法】Day4 分治算法——二分搜索
【趣学算法】Day4 分治算法——二分搜索
90 0
|
算法
【21天算法学习】折半查找
【21天算法学习】折半查找
90 0
|
算法 索引
【21天算法学习】顺序查找
【21天算法学习】顺序查找
65 0
|
存储 NoSQL 索引
搜索算法——顺序查找
笔者看了很多的数据结构的书籍,在这过程中走了很多的弯路,希望看到这个教程的读者能够少走一些弯路,其实很多的教程和文章故弄玄虚,将简单的内容做的复杂,往往看了很久不知道所云,我的教程一定要让读者能在最快的路上学会知识。用生活的例子贴切的解决问题,主要的服务者是所有愿意学习数据结构的同学和考研的同学。
181 0
搜索算法——顺序查找
|
机器学习/深度学习 算法 程序员
经典算法——二分查找
经典算法——二分查找
经典算法——二分查找
|
机器学习/深度学习 缓存 算法
经典算法——折半插入排序
经典算法——折半插入排序
经典算法——折半插入排序