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

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

目录

一、数据结构

二、逻辑结构

三、存储结构

四、算法

五、算法分析


一、数据结构

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

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

        其中: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.mzph.cn/news/820925.shtml

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

相关文章

【Linux】磁盘阵列RAID技术

目录 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 1.2 为什么要使用RAID技术&#xff1f; 二、RAID级别 2.1 常见的RAID级别 2.2 常见RAID介绍 三、RAID特性对比 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 把多块独立的物理磁盘按不同的方式组合起来形成一个硬盘…

【ENSP】华为三层交换机配置AAA认证,开启telnet服务

配置步骤 1.给交换机配置ip地址&#xff0c;以便登陆 2.配置AAA&#xff0c;用户名&#xff0c;密码&#xff0c;服务类型&#xff0c;用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …

基于单链表实现通讯管理系统!(有完整源码!)

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、前言 友友们&#xff0c;这篇文章是基于单链…

使用Python模仿文件行为

在Python中&#xff0c;你可以通过文件操作函数&#xff08;如open()函数&#xff09;以及模拟输入输出流的库&#xff08;如io模块&#xff09;来模拟文件行为。下面是一些示例&#xff0c;展示了如何使用这些工具在Python中模拟文件行为。 1、问题背景 在编写一个脚本时&…

Springboot框架——4.整合jdbc

1.pom.xml中导入依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupI…

SpringMVC(三)【REST 风格】

1、REST 风格 1.1、REST 简介 REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表现形式状态转换 在开发中&#xff0c;它其实指的就是访问网络资源的格式 1.1.1、传统风格资源描述形式 http://localhost/user/getById?id1http://localhost/user…

飞书API(4):筛选数据的三种思路

截止到上一篇&#xff0c;终于通过飞书 API 完整获取到飞书多维表的数据。但是&#xff0c;有些场景&#xff0c;比如数据源会出现脏数据&#xff0c;毕竟如果是运营过程多人协作维护的数据&#xff0c;要想保持数据完美简直是天方夜谭&#xff01;再比如我们不需要完整的数据&…

【JavaWeb】Day46.Mybatis——入门

JDBC介绍 通过Mybatis可以很方便的进行数据库的访问操作。其实java语言操作数据库&#xff0c;只能通过一种方式&#xff1a;使用sun公司提供的 JDBC 规范。Mybatis框架&#xff0c;就是对原始的JDBC程序的封装。 JDBC&#xff1a; ( Java DataBase Connectivity )&#xff0c…

开源了!自从用了这个远程控制工具,从此把 TeamViewer 扔一边了【文末领项目源码】

在工作中&#xff0c;咱们经常要使用向日葵、TeamViewer 等远程控制工具&#xff0c;来远程操控项目上的主机去解决一些部署在现场的系统问题&#xff0c;亦或是在家偶尔加班时用家里的电脑远程公司的电脑处理工作。但不爽的是&#xff0c;TeamViewer 用一用试用期就过了&#…

ES 大数据量按照日期分索引存储和查询

前言 ES 通常被用来存放各种日志数据或其他大批量数据&#xff0c;然后做统计。 对于请求量大的系统来说&#xff0c;日志或其他业务数据无比庞大&#xff0c;需要按日期来划分索引&#xff0c;便于做冷热数据的迁移管理。大批量的业务数据也要根据日期来区分&#xff0c;提高…

Java --- 类与对象

上篇内容给大家带来了Java的语句与数组的相关内容&#xff0c;那么本期内容比较重要&#xff0c;需要读者们掌握Java面向对象编程的根本&#xff0c;通过这篇博客来让读者浅入理解Java类的一些基本操作。 目录 一.特点&#xff1a; 二.成员变量&#xff1a; 三.访问修饰符&a…

【JavaSE】搞定String类

前言 本篇会细致讲解String类的常见用法&#xff0c;让小伙伴们搞定String类~ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 常用的三种字符串构造 字符串长度length 字符串比较 比较 比较字符串的内容equals…

MySQL DDL 通用语法

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

libftdi1学习笔记 4 - MPSSE SPI

目录 1. 初始化 2. SCK默认电平设置 3. GPIO控制 4. spi全双工通信 4.1 MSB/LSB 4.2 分配command缓存 4.3 spi0TransferBit 4.3 spi1TransferBit 4.4 spi2TransferBit 4.5 spi3TransferBit 4.6 写命令序列 4.7 读数据 4.8 组合实际数据 5. 验证 5.1 初始化FTDI设…

短视频底层逻辑分析

短视频底层逻辑 1.迭代模型_ev 2.Douyin的本质_ev 3.Douyin的审核机制_ev 4.平台趋势_ev 5.定位_ev 6.建立用户期待_ev 7.好内容的定义_ev 8怎么做好内容_ev 9.如何做好选题_ev 10.如何快速模仿_ev 11.账号拆解的底层逻辑_ev 12选人的重要性_ev 13.内容的包装_ev 14.打造大IP的…

【中间件】ElasticSearch简介和基本操作

一、简介 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎&#xff0c;支持各种数据类型&#xff0c;包括文本、数字、地理、结构化、非结构化 ,可以让你存储所有类型的数据&#xff0c;能够解决不断涌现出的各种用例。其构成如下&#xff1a; 说明&#xff1…

Python数学建模学习-PageRank算法

1-基本概念 PageRank算法是由Google创始人Larry Page在斯坦福大学时提出&#xff0c;又称PR&#xff0c;佩奇排名。主要针对网页进行排名&#xff0c;计算网站的重要性&#xff0c;优化搜索引擎的搜索结果。PR值是表示其重要性的因子。 中心思想&#xff1a; 数量假设&#…

创领“浆”来:三一重工特种砂浆站引领行业绿色高效新纪元

随着我国城市化进程不断加快&#xff0c;国家对城市建设高度关注&#xff0c;国务院办公厅针对城镇老旧小区基础设施匮乏、住房条件落后、环境污染严重等突出问题印发了《关于全面推进城镇老旧小区改造工作的指导意见》&#xff0c;各地积极响应&#xff0c;因此特种砂浆也迎来…

【微信取证篇】微信收藏图片存储记录思维导图

【微信取证篇】微信收藏图片存储记录思维导图 最近在测试微信收发图片和收藏的功能&#xff0c;发现许多有意思的地方&#xff0c;**微信收藏图片缓存的文件目前发现有三个地方&#xff0c;都是在Fav下&#xff0c;名称都一样&#xff0c;有直接原始图片&#xff0c;也有加密的…

2024年nodejs调用小红书最新关注(粉丝)follow接口,api接口分析2004-04-16

一、打开chrome按f12&#xff0c;点击右上角的“关注”按钮&#xff0c;抓包位置如下&#xff1a; (图1 follow接口) 二、follow接口分析 1、请求地址 https://edith.xiaohongshu.com/api/sns/web/v1/user/follow 2、请求方法: POST 3、请求头&#xff1a; :authority: edith…