数据结构速成--数据结构和算法

news2024/11/28 18:37:11

        由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。

目录

一、数据结构

二、逻辑结构

三、存储结构

四、算法

五、算法分析


一、数据结构

        数据是对客观事物的符号表示,如图像、声音等。
        数据元素是数据的基本单位。
        数据项是构成数据元素的不可分割的最小单位。

        一个数据元素可由若干个数据项组成,例如,一位学生的信息记录为一个数据元素,它是由学号、姓名、性别等数据项组成。
        数据对象是具有相同性质的数据元素的集合。
        数据结构是相互之间存在一种或多种特定关系的数据元素的集合
        数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。
        数据结构的形式定义为:数据结构是一个二元组如下

        其中:D是数据元素的有限集,S适用于表示数据元素相互关系的有限集。 

        第一部分大家主要掌握概念内容,分清基本单位、最小单位以及数据结构是数据元素的集合即可!

二、逻辑结构

        逻辑结构是指数据元素之间的逻辑关系,与数据的存储无关,独立于计算机。

        第二部分大家只要记住逻辑结构中,线性和非线性结构都有哪些,记住他们的名称即可。

三、存储结构

        存储结构(物理结构)是指数据结构在计算机中的表示,它包括数据元素的表示和关系的表示。

        顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系
由存储单元的邻接关系来体现。
        链式存储:借助指示元素存储地址的指针来表示元素之间的逻辑关系。
        索引存储:在存储元素信息的同时,还建立附加的索引表
        散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(hash)存储。 

        第三部分大家记住四种存储结构,以及我重点标红的地方即可! 

四、算法

         算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。此外,一个算法还具有下列个重要特性:
(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都是在有穷时间内完成。
(2)确定性。算法中每条指令必须有确切的含义,且相同的输入只能得到相同的输出
(3)可行性。算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
(4)输入。一个算法有零个或多个输入
(5)输出。一个算法有一个或多个输出

注意:一个算法可以没有输入,但是必须要有输出!!!

        通常设计一个“好”的算法应考虑达到以下目标:

  • 正确性。算法应能够正确地求解问题。
  • 可读性。算法能具有良好的可读性,以帮助人们理解。
  • 健壮性。输入非法数据时,算法能做出反应或处理,而不会产生莫名其妙的输出结果。
  • 效率与低存储量需求。效率是指算法执行的时间,存储量需求是指算法执行过程中所需的最大存储空间。 

        第四部分大家重点记住算法的五大特性,以及实现优秀算法的四大目标,一定不要弄混了!

五、算法分析

        我们进行算法分析的目的就是分析算法的效率以求改进

        算法效率的度量是通过时间复杂度和空间复杂度来描述的。

        一个语句的频度是指该语句在算法中被重复执行的次数。

        算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析的T(n)数量级。 

注意:常系数全部去掉,比如O(4n)就把4去掉,应该是O(n)。

        空间复杂度一般不会让大家来算,就记住一下概念,他是算法所占额外空间的量度。 

例1:

        本道题选D。A算得O(2n^{^{3}}) ,去掉常系数2,就是O(n^3{^{}});B也是O(n^3{^{}});C是O(n^{2}log_{2}n);D是O(n^{2})。

例2:

//求时间复杂度
for(i=2;i<=n;++i)
    ++x;
    for(j=1;j<=i-1;++j)
        a[i][j]=x;

         上面代码是嵌套for循环,i<=n 和 j<=i-1两层应该是O(n^{2})。二维数组访问都要嵌套,一般都是O(n^{2})。

例3:

//求时间复杂度
i=1;
while(i<=n)
    i=i*2;

        上面代码我们注意i每次变化都是成2倍递增的,假设第x次变化就要跳出循环,这时候就是2^{x}=n,就能算到x=log_{2}n。一共重复log_{2}n次,因此时间复杂度是O(log_{2}n)。

例4:

        这段代码复杂度可以看到(y+1)^{2}<=n,则y+1<=n^{\frac{1}{2}},变成1次幂才可以计算,因为y+1,在循环条件里其实变了两次,因此时间复杂度为O(n^{\frac{1}{2}})。

        第五部分是本章最重要的内容,大家一定要记住如何计算时间复杂度,加法/乘法规则,以及常见时间复杂度的大小比较,看看例题熟练掌握!

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

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

相关文章

pdffactory pro 8注册码序列号下载 附教程

PdfFactory Pro可以说是一款行业专业且技术领先的的PDF虚拟打印机软件。其不仅占用系统内存小巧&#xff0c;功能强大&#xff0c;可支持用户无需使用Acrobat来创建Adobe PDF即可以进行PDF组件的创建和打印。同时&#xff0c;现在全新的PdfFactory Pro 8也正式上线来袭&#xf…

【资源分享】MAC上最好用的截图软件-Snipaste

::: block-1 “时问桫椤“是一个关注本科生到研究生教育阶段的不严肃的公众号&#xff0c;希望能在大家迷茫、难受、困难之时帮助到大家。用广大研究生的经验总结&#xff0c;让大家能尽早的适应研究生生活&#xff0c;尽快的看透科研本质。祝好&#xff01;&#xff01;&#…

Day94:云上攻防-云服务篇弹性计算云数据库实例元数据控制角色AK控制台接管

目录 云服务-弹性计算服务器-元数据&SSRF&AK 前提条件 利用环境1&#xff1a;获取某服务器权限后横向移动 利用环境2&#xff1a;某服务器上Web资产存在SSRF漏洞 云服务-云数据库-外部连接&权限提升 云上攻防-如何利用SSRF直接打穿云上内网 知识点&#xff1…

科技动态人工智能应用太空探索生物科技

根据最新的科技资讯&#xff0c;以下是一些值得关注的科技动态&#xff1a; 人工智能领域 智能体热潮 &#xff1a;随着大模型的研发热潮&#xff0c;AI智能体的发展迅速&#xff0c;它们被用作认知核心&#xff0c;具备强大的学习和迁移能力。智能体的架构和交互方式也在不断进…

vue快速入门(十五)监听键盘事件

注释很详细&#xff0c;直接上代码 上一篇 新增内容 特定按键监听事件全按键监听事件及两种判断方法 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthde…

03-JAVA设计模式-代理模式详解

代理模式 什么是代理模式 Java代理模式是一种常用的设计模式&#xff0c;主要用于在不修改现有类代码的情况下&#xff0c;为该类添加一些新的功能或行为。代理模式涉及到一个代理类和一个被代理类&#xff08;也称为目标对象&#xff09;。代理类负责控制对目标对象的访问&a…

蓝桥杯简单STL

目录 vector vector定义 vector访问 常用函数 size() ​编辑 push_back(num) pop_back() clear 迭代器&#xff08;iterator) 迭代器定义 遍历数组示例 insert(it, element) erase(it) 标准模板库--STL&#xff0c;它包含了多种预定义的容器、算法和迭代器&…

算法——倍增

. - 力扣&#xff08;LeetCode&#xff09; 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径…

SQL注入sqli_libs靶场第一题

第一题 联合查询 1&#xff09;思路&#xff1a; 有回显值 1.判断有无注入点 2.猜解列名数量 3.判断回显点 4.利用注入点进行信息收集 爆用户权限&#xff0c;爆库&#xff0c;爆版本号 爆表&#xff0c;爆列&#xff0c;爆账号密码 2&#xff09;解题过程&#xff1…

【前端捉鬼记】使用nvm切换node版本后再用node -v查看仍然是原来的版本

今天遇到一个诡异的问题&#xff0c;使用nvm切换node版本&#xff0c;明明提示已经切换成功&#xff0c;可是再次查看node版本还是之前的&#xff01; 尝试了很多办法&#xff0c;比如重新打开一个cmd窗口、切换前执行nvm install version都没成功&#xff0c;直到找到这篇文章…

# ABAP SQL 字符串处理

经常我都要在ABAP的sql语句中对字符串进行处理&#xff0c;现在就总结一下可以用到的方法 文章目录 字符串处理拼接字段运行结果 填充字符串运行结果 截取字符串 SUBSTRING运行结果 CAST转换类型程序运行结果 字符串处理 在SQL语句中&#xff0c;有时候会有需要拼接字段或者是…

Java 集合Collection

集合的体系 Collection的结构体系 List系列集合&#xff1a;添加的元素是有序的、可重复、有索引。Set系列集合&#xff1a;无序、不重复、无索引 HashSet&#xff1a;无序、不重复、无索引LinkedHashSet:有序、不重复、无索引TreeSet&#xff1a;按照大小默认升序排序、不重复…

ES6基础(JavaScript基础)

本文用于检验学习效果&#xff0c;忘记知识就去文末的链接复习 1. ECMAScript介绍 ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff0c;英文名称是European Computer Manufacturers Association&#xff09;通过ECMA-262标准化的脚本程序设计语言…

SRNIC、选择性重传、伸缩性、连接扩展性、RoCEv2优化(六)

参考论文SRDMA&#xff08;A Scalable Architecture for RDMA NICs &#xff09;&#xff1a;https://download.csdn.net/download/zz2633105/89101822 借此&#xff0c;对论文内容总结、加以思考和额外猜想&#xff0c;如有侵权&#xff0c;请联系删除。 如有描述不当之处&…

Python中大的一把锁

今天可以来讲解下GIL是个什么了。 GIL为什么是Python中大的一把锁&#xff1f; GIL是Global Interpreter Lock的缩写&#xff0c;翻译过来就是全局解释器锁。 从字面上去理解&#xff0c;它就是锁在解释器头上的一把锁&#xff0c;它使Python代码运行变得有序。 假如有一段…

vue2 使用vue-org-tree demo

1.安装 npm i vue2-org-tree npm install -D less-loader less安装 less-loader出错解决办法&#xff0c;直接在package.json》devDependencies下面加入less和less-loader版本&#xff0c;然后执行npm i &#xff0c;我用的nodejs版本是 16.18.0&#xff0c;“webpack”: “^4…

上位机图像处理和嵌入式模块部署(qmacvisual缺失的颜色检测)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在图像处理当中&#xff0c;对颜色的处理是非常重要的。当然&#xff0c;这要建立在拍摄图片是彩色图片的基础之上。工业上面&#xff0c;虽然是黑…

wsl初步使用记录

wsl介绍 WSL是windows平台下Linux环境的子系统&#xff08;Windows Subsyetem for Linux&#xff09;&#xff0c;可以让Windows下方便的安装Linux系统&#xff0c;而无需安装其他虚拟机软件。 wsl使用 Windows操作系统支持 Windows 10 版本 2004 及更高版本&#xff08;内…

ruoyi-nbcio-plus基于vue3的flowable的自定义业务单表例子的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

Vant DropdownMenu 下拉菜单带搜索功能

Vant DropdownMenu 下拉菜单带搜索功能 效果图&#xff1a; 上代码&#xff1a; <van-dropdown-menu active-color"#E33737"><van-dropdown-item ref"dropdownItem"><template #title><span>{{ dropdownItem.text }}</span…