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

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

目录

一、数据结构

二、逻辑结构

三、存储结构

四、算法

五、算法分析


一、数据结构

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

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

        其中: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.hqwc.cn/news/614870.html

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

相关文章

Linux 使用 ifconfig 报错:Failed to start LSB: Bring up/down networking

一、报错信息 在运行项目时报错数据库连接失败&#xff0c;我就想着检查一下虚拟机是不是 Mysql 服务忘了开&#xff0c;结果远程连接都连接不上虚拟机上的 Linux 了&#xff0c;想着查一下 IP 地址看看&#xff0c;一查就报错了&#xff0c;报错信息&#xff1a; Restarting…

前端Vue中基于uQRCode的二维码生成插件:从入门到精通的应用与实践(适配Vue3)

前端Vue中基于uQRCode的二维码生成插件&#xff1a;从入门到精通的应用与实践(适配Vue3) 在数字化时代&#xff0c;二维码作为一种信息传递的便捷方式&#xff0c;已经渗透到我们生活的方方面面。无论是微信扫码支付、网页链接跳转&#xff0c;还是广告宣传、身份验证等场景&am…

基于Whisper语音识别的实时视频字幕生成 (一): 流式显示视频帧和音频帧

Whishow Whistream&#xff08;微流&#xff09;是基于Whisper语音识别的的在线字幕生成工具&#xff0c;支持rtsp/rtmp/mp4等视频流在线语音识别 1. whishow介绍 whishow&#xff08;微秀&#xff09;是python实现的在线音视频流播放器&#xff0c;支持rtsp/rtmp/mp4等流式输…

C语言--结构体大小

基本数据类型占用的字节数分别为:char(1),short(2),int(4),long(4),long long(8),float(4),double(8)。 分析一下下面结构体占用的字节数。 struct A { int a; }; struct B { char a; int b; }; int main() { printf("sizeof(struct A)%d\n", sizeof(struct A));//测…

抽象的算法0.1.1版本

前言&#xff1a;在0.1版本中&#xff0c;我们得到了可迭代的超级模板&#xff0c;问题简单化 最近看到一本十分厉害的电子书&#xff0c;其中两句话让我虎躯一震&#xff0c;这就是大佬的思维&#xff01; 第一句话&#xff1a;数学是用来描述万物本质的语言&#xff0c;是理…

Comparablae接口

在日常生经常涉及到排序的的问题&#xff0c;排序问题中又不得不涉及到比较的问题。在排序问题中根据不同的规则对多个对象进行比较&#xff0c;然后根据比较内容的不同对对象进行排序。java中的Comparable就是用来定义排序规则的接口。当要对类中的对象进行排序操作时&#xf…

MYSQL5.7详细安装步骤

MYSQL5.7详细安装步骤&#xff1a; 0、更换yum源 1、打开 mirrors.aliyun.com&#xff0c;选择centos的系统&#xff0c;点击帮助 2、执行命令&#xff1a;yum install wget -y 3、改变某些文件的名称 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base…

C语言 | Leetcode C语言题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; int removeDuplicates(int* nums, int numsSize) {if (numsSize 0) {return 0;}int fast 1, slow 1;while (fast < numsSize) {if (nums[fast] ! nums[fast - 1]) {nums[slow] nums[fast];slow;}fast;}return slow; }

能看会说的人形机器人,对话的样子吓到我了

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 还记得这个表情宛如真人的人形机器人吗&#xff1f; ta被取名Ameca&#xff0c;由一家名为「…

模板方法模式:定义算法骨架的设计策略

在软件开发中&#xff0c;模板方法模式是一种行为型设计模式&#xff0c;它在父类中定义一个操作的算法框架&#xff0c;允许子类在不改变算法结构的情况下重定义算法的某些步骤。这种模式是基于继承的基本原则&#xff0c;通过抽象类达到代码复用的目的。本文将详细介绍模板方…

二维数组---刷题

一维数组不想更了&#xff0c;弄点二维数组&#xff01; 1.对角线 已知一个6*6的矩阵&#xff0c;把矩阵两条对角线上的元素加上10&#xff0c;然后输出这个新矩阵。 思路 题目简单&#xff0c;6*636&#xff0c;可以得知有36个元素。数组就定义成a[7][7]&#xff0c;难点在与…

[大模型]Yi-6B-Chat 接入 LangChain 搭建知识库助手

Yi-6B-Chat 接入 LangChain 搭建知识库助手 环境准备 在 autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其中的终端开始…