目录

​一、算法介绍

1.算法思想

2.算法流程

二、算法实现

1.代码实现

2.测试用例及结果

三、效率分析

1.时间复杂度

2.空间复杂度


​一、算法介绍

1.算法思想

顺序查找也称线性查找,其查找思想非常简单,只需对数组进行遍历并将待查找元素key与数组内元素逐个比较即可,若相同则查找成功返回对应数组下标;若遍历完整个数组也没有找到待查找元素,则说明查找失败,返回-1。

2.算法流程

例:给定一个数组arr[]={2,5,4,8,9,7},查找元素8,成功返回元素对应数组下标,失败返回-1。

若采用上述示例查找元素10,则通过循环比较完数组arr中6个元素后,仍未找到待查找元素,则退出循环并返回-1。

二、算法实现

1.代码实现

#include<iostream>
using namespace std;int SeqSearch(int* arr, int size, int key) {//顺序查找for (int i = 0; i < size; i++) {if (arr[i] == key) {return i;}}return -1;
}void Test() {//测试函数int arr[] = { 2,5,4,8,9,7 };int length = sizeof(arr) / sizeof(arr[0]);//获取数组内元素个数int key;cout << "请输入待查找元素:";cin >> key;int result = SeqSearch(arr, length, key);//调用顺序查找函数if (result == -1) {cout << endl << "查找失败!" << endl;cout<<"集合中没有待查找元素!" << endl;}else {cout << "查找成功!" << endl;cout << "元素" << key << "所在位置下标为" << result << "!" << endl;}
}int main() {Test();return 0;
}

2.测试用例及结果

arr[]={2,5,4,8,9,7}

查找元素8:

查找元素7:

查找元素10:

三、性能分析

1.时间复杂度

最坏情况:

待查找元素位于集合末尾位置或查找失败时,程序需遍历完整个集合才能退出,此时的循环次数与集合元素个数n有关,所以时间复杂度为O(n)。

最好情况:

最理想的情况就是待查找元素位于集合的第一个位置,程序只需执行一次循环和比较就成功找到待查找元素并返回退出,所以时间复杂度为O(1)。

平均情况:

综合两种情况,顺序查找的时间复杂度为O(n)。

2.空间复杂度

算法中只需设置一个临时变量用于控制循环次数和数组下标变化,没有借助额外的辅助空间,所以空间复杂度为O(1)。

四、优化方案

1.优化思想

考虑到顺序查找的思想是通过顺序比较集合元素的方法进行查找,所以我们可以通过设置两个索引从集合的两边进行同时比较查找,这样每次循环就可以比较淘汰两个元素,从而一定程度上的提高算法效率。

2.代码实现

#include<iostream>
using namespace std;int Optimized_SeqSearch(int* arr, int size, int key) {//顺序查找优化版本int index1 = size - 1;//右侧索引int index2 = 0;//左侧索引while (index2 <= index1) {//相等位置也需要比较if (arr[index1] == key) {return index1;}if (arr[index2] == key) {return index2;}index1--;index2++;}return -1;
}void Test() {//测试函数int arr[] = { 2,5,4,8,9,7 };int length = sizeof(arr) / sizeof(arr[0]);//获取数组内元素个数int key;cout << "请输入待查找元素:";cin >> key;//int result = SeqSearch(arr, length, key);//调用顺序查找函数int result = Optimized_SeqSearch(arr, length, key);//调用顺序查找函数if (result == -1) {cout << endl << "查找失败!" << endl;cout<<"集合中没有待查找元素!" << endl;}else {cout << "查找成功!" << endl;cout << "元素" << key << "所在位置下标为" << result << "!" << endl;}
}int main() {Test();return 0;
}

3.测试用例及结果

arr[]={2,5,4,8,9,7}

查找元素8:

查找元素7:

查找元素0:

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

查找算法——顺序查找相关推荐

  1. 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)

    搜索是在一个项目集合中找到一个特定项目的算法过程.搜索通常的答案是真的或假的,因为该项目是否存在.搜索的几种常见方法:顺序查找.二分法查找.二叉树查找.哈希查找 一.顺序查找 最基本的查找技术,过程: ...

  2. 经典查找算法 - 顺序查找法

    查找-是最常见的数据操作之一,数据结构核心运算之一,其重要性不言而喻. 顺序查找是人们最熟悉的查找策略,对于小规模的数据,顺序查找是个不错的选择. 1. 顺序查找: 核心:从数据的第一个元素开始,依次 ...

  3. 查找算法:二分查找、顺序查找

    08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...

  4. 【数据结构与算法】比较法分析查找算法与查找结构

    基本的查找技术: 线性表的查找技术 顺序查找 分块查找 二分查找(折半查找) 插值查找 树表的查找技术 二叉排序树 平衡二叉树 B树(B+树.B-树等) 散列表的查找技术 开散列表 闭散列表 顺序查找 ...

  5. C语言丨线性查找(顺序查找)

    程序员在程序设计时常常需要对存储在数组中的大量数据进行处理,如排序.查找等.使用数据库时,用户可能需要频繁通过输入键字值来查找相应的记录.在数组中搜索一个特定元素的处理过程,称为查找.这次我们来介绍一 ...

  6. 查找(顺序查找、二分查找、插值查找)

    查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录). 查找表分类:静态查找表和动态查找表. 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删 ...

  7. 数据结构与算法-查找算法(二分查找,插值查找,斐波那契(黄金分割法)查找)

    查找算法 以下三种算法的基本思想相同,都是利用递归来寻找 二分查找 思路分析 1.首先确定该数组的中间下标,min = (left + right) / 2 2.然后让需要查找的的数findVal和a ...

  8. 算法 --- 顺序查找、二分查找的js实现

    顺序查找: function seqSearch(arr, data) {for(let i = 0; i< arr.length;i++) {if(data == arr[i]) {retur ...

  9. php顺序查找法,php二分查找、顺序查找算法

    摘要:php查找数组元素有内置的函数array_search和in_array,顺序查找对数组排序没有要求,二分查找法要求数组必须是一个有序数组!1.顺序查找function sequence_sea ...

最新文章

  1. asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路
  2. php trace 函数,PHP Trace 实现原理
  3. CLOSE_WAIT状态的原因与解决方法 --转
  4. dart系列之:dart语言中的特殊操作符
  5. openwrt上wifi探针的实现
  6. 树莓派 Learning 002 装机后的必要操作 --- 03 替换软件源
  7. BizTalk开发系列(二十九) 宏的使用
  8. 阿里双十一技术揭秘——双十一 手淘技术用了这几招
  9. linux打包除了某个文件夹,tar打包且排除某个文件
  10. [境内法规]中国人民银行关于分支行反洗钱工作的指导意见—银发[2005]56号
  11. 通达信的指标公式改为条件选股公式,进行预警
  12. linux压缩到最小命令,Linux压缩打包命令
  13. 优秀的云计算工程师需要学什么?云计算Docker学习路线
  14. 安装Aras Innovator
  15. kaldi运行yesno例程
  16. unshift() 与shift() 方法
  17. append和extend的差别
  18. 50个BA分析工具第五个-Business Model Cavans
  19. 【计算机网络:自顶向下方法】(一)计算机网络和英特网
  20. 移动游戏 真的吗???真的

热门文章

  1. 运动规划RRT*算法图解
  2. TopFlash钓鱼
  3. 阿里云企业邮箱标准版用户数功能说明
  4. Android防止过快点击造成多次事件
  5. 华为p50 pro 鸿蒙,华为P50 Pro将于6月发布,鸿蒙系统加持,这才是华为真正实力!...
  6. 《阿里云科技评论》第五期
  7. curl php 七牛下载慢,七牛上传速度太慢
  8. html输出计算结果到文本框,在文本框中输入两个操作数和选择运算符后,在页面上显示输出结果...
  9. HTML+CSS实践项目一——摄影网站案例总结分享
  10. AI也有健忘症?英国41岁教授专访:解决灾难性遗忘