数据结构与算法的联系(笔记)

文章目录

  • 1. 什么是数据结构
    • 定义
    • 举例
      • CRUD难道不是都一样吗?
    • 总结
  • 2. 什么是算法
  • 3. 数据结构与算法的联系
    • 举例
  • 4. 推荐

1. 什么是数据结构

定义

数据结构(data structure)是计算机中存储、组织数据的方式。
关键词:① 数据 ② 存储 ③ 组织

举例

以手机通讯录存储联系人为例:
在这里插入图片描述
① 数据:人名、手机号
② 存储数据的方式:列表(list)
③ 组织:CRUD(增删改查,计算机中的缩写)
     增 – 增加一个联系人信息
     删 – 删除一个联系人信息
     改 – 修改联系人信息(如:改备注)
     查 – 查询某个联系人的信息(如:查手机号)
     这里的增删改查都是相对于组织而言的
结论:数据结构这门学科,无非就是跟数据有关。关于数据我们要研究两个东西,一个是数据的存储方式,另一个是数据如何CRUD。

CRUD难道不是都一样吗?

结论:不一样
解释:以快递格子(二维静态数组)为例,它的特别之处在于 有行、列之分。这个世界上有很多不同的结构(不同的存储方式),例如:列表、二维数组、树、图、线性表(这个词在国际上不存在,在国际面试时 就说array-数组,没有别的词)。 对于这个格子,我们可以查和改,但是没法增和删(因为这个箱子是固定的,总不能把箱子给砸了)。
在这里插入图片描述
数组有一维、二维以及动态、静态之分。上述内容其实也可以用一维静态数组存储。

总结

① 数据结构其实跟日常生活非常密切
② 数据结构三大点:1.必须要有数据的操作;2.数据是怎么存储的;3.数据是怎么组织的
③ 这个数据是如何存储的,就决定了这个数据如何组织(CRUD)。

2. 什么是算法

        算法就是解决问题采用的步骤和方法
        算法的目的:算法就是为了研究组织数据结构的最优CRUD解(例如:这个数据我们怎么更快地查出来、这个数据我们怎么更快地去添加、这个数据我们怎么更快地修改、这个数据我们怎么更快地删除)。简单来说就是为了解决 “如何更好地组织数据” 这个问题。

3. 数据结构与算法的联系

        数据结构和算法是有关系的,但不是从属关系,不是并列关系,也不是相互影响的关系。组织是数据结构中一个核心的部分,但是我们如何更科学、更高效、更优等地组织,这就需要用到算法,算法是处于 “如何组织” 这一部分的。
        数据结构与算法之间存在一个清晰的逻辑:1. 必须先搞清楚数据是什么(例如:我们用的QQ号、QQ密码、支付密码、个人信息等都存到服务器上的东西都可以称为数据);2. 然后考虑如何解决这些数据(很重要)。数据结构的目的就是为了研究怎么存储这些数据、怎么组织这些数据,然后告诉你有哪些组织方式,在什么情况下用什么组织方式更好(例如用格子管理快递、用列表管理联系人) 3. 如果条件允许的话,可以进一步考虑一下如何更好地组织这些数据(这就用到了算法)。

举例

一 、情景:
记者: 请问1-20里,您喜欢哪些数字呢
路人甲:11、3、5、7、8
记者:请问1-20里,您喜欢哪些数字呢
路人乙:12、8、9。刚刚那个人和我一样喜欢8这个数字么?
记者:稍等一下,我查一下,我刚刚记录了。是的,她也喜欢。
二、 分析:
数据结构:
        数据:路人甲和路人乙回复的数字
        存储:此处采用两个一维数组a[30]、b[30]
        组织:在数组a[30]中查询数字4的过程。可以采用for循环遍历数组,看看数组里是否有数字4。
算法:怎么更快的查询。可以采用二分查找

4. 推荐

笔记来源:直面数据结构课程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css简单易懂的加载动画,看不会算我输好吧

效果展示 步骤 第一阶段 先准备结构&#xff0c;并且放置12个div&#xff0c;每一个div旋转30*n度&#xff0c; 做一个圆圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式弹性计算集(RDD)相关概念介绍

目录 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依赖关系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化级别 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于语义的法律问答系统

第一步&#xff0c;准备数据集 第二步&#xff0c;构建索引数据集&#xff0c;问答对数据集&#xff0c;训练数据集&#xff0c;召回评估数据集 第三步&#xff0c;构建dataloader,选择优化器训练模型&#xff0c;之后召回评估 第四步&#xff0c;模型动转静&#xff0c;之后…

【UE5.1 角色练习】15-枪械射击——子弹发射物

目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中&#xff08;【UE5.1 角色练习】06-角色发射火球-part1&#xff09;我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”&#xff0c;用于表示…

若依搭建 帝可得 售货机 笔记

一、搭建项目 1.后端gitee链接&#xff1a; 启动项目时记得修改mysql和redis的相关信息&#xff1b;创建项目相关数据库&#xff0c;并导入初始化的SQL脚本 dkd-parent: 帝可得后台管理系统 (gitee.com) 2.前端gitee链接&#xff1a; 启动项目时记得安装依赖&#xff1a;np…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站&#xff0c;点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用&#xff1a;静态网页服务 之后&#xff0c;事实证明&#xff1a; 总而言之&#xff0c;自动化是一个很令人着迷的东西&#xff0c;摆脱重复繁琐的工作&#xff0c;解放了双手的…

JCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分…

【45 Pandas+Pyecharts | 去哪儿海南旅游攻略数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 日期处理&#xff0c;提取年份、月份2.4 经费处理2.5 天数处理 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 出发日期_…

华南师范大学“大学生校外实践教学基地”授牌仪式暨见习参观活动圆满结束

为促进校企合作的深入发展&#xff0c;培育出具有实际应用技能的人才&#xff0c;7月9日&#xff0c;华南师范大学数学科学院与广东泰迪智能科技股份有限公司联合开展“大学生校外实践教学基地”授牌仪式暨见习参观活动。华南师范大学数学科学院数据科学系主任陈艳男、副主任陈…

Idea 2023 使用GitLab提交代码提示输入Token

项目场景&#xff1a; 今天电脑换硬盘了&#xff0c;安装了 IDEA2023 款的社区版开发工具&#xff0c;下载代码后&#xff0c;提交并推送代码到远程服务器的时候&#xff0c;提示输入Token&#xff0c;并不是用户名和密码。 问题描述 推送代码到远程GitLab本地仓库的时候&…

单链表--续(C语言详细版)

2.6 在指定位置之前插入数据 // 在指定位置之前插入数据 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分为两种情况&#xff1a;1. 插入的数据在链表中间&#xff1b;2. 插入的数据在链表的前面。 // 在指定位置之前插入数据 void SLTInsert(SLTNode** …

AI绘画何以突飞猛进? 从历史到技术突破, 一文读懂火爆的AI绘画发展史

前言 自从前段时间偶然间被当下AI绘画的水平震住之后&#xff08;超越一切的AI作画神器&#xff0c;和它创作的234个盔甲美女未来战士&#xff09; &#xff0c;作者深感当今AI绘画的飞速进展或许已远超所有人的预期。 而这里的前因后果&#xff0c;包括AI绘画的历史&#xff…

十九.升职加薪系列-JVM优化-解决JVM性能瓶颈的JIT即时编译器

前言 在很多年以前&#xff0c;做C或者C的程序员经常说Java语言的运行速度不如C或C&#xff0c;Java运行速度慢主要是因为它是解释执行的&#xff0c;而C或C是编译执行的&#xff0c;解释执行需要通过JVM虚拟机将字节码实时翻译成机器码&#xff08;边翻译边执行&#xff09;&…

Rust 版本升级:rustup update stable 报错

Rust 版本升级 rustup update stable 报错 一、报错内容 error: could not download file from ‘https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256’ to ‘/Users/xxx/.rustup/tmp/rv6vdfu3eupwo64m_file’: failed to make network request: error sendi…

【实战场景】@Transactional中使用for update的注意点

【实战场景】Transactional中使用for update的注意点 开篇词&#xff1a;干货篇&#xff1a;知识回顾注意点1.锁的范围和粒度&#xff1a;2.事务的隔离级别&#xff1a;3.死锁&#xff1a;4.性能影响&#xff1a;5.事务的边界&#xff1a;6.异常处理&#xff1a;7. 数据库和存储…

【漏洞复现】网神 SecGate 3600 防火墙 sys_export_conf_local_save 任意文件读取

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

javaweb学习day5--《HTML篇》Springboot的模块创建、HTML的相关知识点详解

一、前言 从今天开始&#xff0c;就要启动后端的学习了&#xff0c;Springboot会贯穿到底&#xff0c;一定要跟着小编严谨的去搭建Springboot环境&#xff0c;依赖添加的过程可能需要2分钟左右&#xff0c;读者们要耐心等待一下&#xff0c;搭建好Springboot之后才算正式的开始…

算力革命:弹性租赁,解锁无限可能

华为创始人任正非曾在一场程序设计竞赛中说道&#xff0c;我们即将进入第四次工业革命&#xff0c;基础就是大算力。事实上&#xff0c;随着5G、人工智能等信息技术的迅猛发展&#xff0c;算力需求持续增长&#xff0c;但高昂的成本和快速的技术迭代让许多中小企业和个人开发者…

Covalent Network(CXT)通过社区投票将代币迁移并更名为 CXT,以推动人工智能更深层次的创新

专注于人工智能和 Web3 的模块化数据基础设施 Covalent Network&#xff08;CXT&#xff09;宣布&#xff0c;其治理提案已通过社区投票并顺利实施&#xff0c;即将原生代币 CQT 迁移为新的 CXT 代币&#xff0c;并部署至新的合约。这一关键性转变标志着 Covalent Network&…

springboot文达办公物资管理系统-计算机毕业设计源码51191

摘要 本文介绍了一种名为"文达办公物资管理系统"的基于JAVA语言、基于Springboot框架和MYSQL数据库开发的管理系统。该系统主要分为管理员和员工用户两个角色&#xff0c;以满足不同用户的需求。 对于管理员用户&#xff0c;系统提供了仪器设备管理、设备借用管理、设…