【王道数据结构】第一章 | 绪论 | 数据结构与算法的概念

news2024/11/16 20:25:23

目录

1.1数据结构的基本概念

1.2数据结构的三要素

1).数据的逻辑结构:

2).数据的存储结构(物理结构):

3).数据的运算

4).数据类型和抽线数据类型

1.3算法的基本概念

1.4 空间复杂度

1.5时间复杂度

 


1.1数据结构的基本概念

1.数据:数据是信息的载体,符号的集合、所有能输入到计算机中并能被计算机程序处理(例如:人类)。

2.数据元素:组成数据的基本单位,也称为记录。[例如:人]

3.数据对象:数据对象是具有相同性值的数据元素的集合,是数据的一个子集。

4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。


1.2数据结构的三要素

1).数据的逻辑结构:

逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。

逻辑结构包括:

  • 集合结构:结构中的数据元素之间除“同属一个集合”外,别无其它关系(例如:一群羊)。
  • 线性结构:结构中的数据元素之间只存在一对一的关系,除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继(例如:排队取号)。
  • 树形结构:结构中数据元素之间存在一对多的关系(例如:思维导图)。
  • 图状结构:数据元素之间是多对多的关系(例如:道路信息)。

2).数据的存储结构(物理结构):

存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。

存储结构包括:

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

3).数据的运算

针对于某种逻辑结构,结合实际需求,定义基本运算。

例如:逻辑结构->线性结构

基本运算:
1.查找第i个数据元素
2.在第i个位置插入新的数据元素
3.删除第i个位置的数据元素......

运算的定义是针对逻辑结构的,指出运算的功能;

运算的实现是针对存储结构的,指出运算的具体操作步骤。

4).数据类型和抽线数据类型

数据类型是一个值的集合和定义再此集合上的一组操作的总称。例如:定义int整形,我们就可以把他们加减乘除等操作。

  • 1)原子类型。其值不可再分的数据类型。如bool 和int 类型。
  • 2)结构类型。其值可以再分解为若干成分(分量)的数据类型(例如:结构体)。

抽象数据类型。抽象数据组织及与之相关的操作。


1.3算法的基本概念

程序 = 数据结构+算法

数据结构:如何用数据正确地描述现实世界的问题,并存入计算机。

算法:如何高效地处理这些数据,以解决实际问题

算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。
算法的特性: 

  • 1.有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。
  • 2.确定性:算法中每条指令必须有确定的含义,对于相同的输入只能得到相同的输出。
  • 3.可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
  • 4.输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
  • 5.输出:一个算法有一个多个输出,这些输出是与输入有着某种特定关系的量。

我们可以类比:y = f(x)函数,其中x就是输出,y就是输出,这个函数就是算法

好的算法达到的目标:

  • 1.正确性:算法应能够正确的求解问题。
  • 2.可读性:算法应具有良好的可读性,以帮助人们理解。
  • 3.健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名奇妙地输出结果。
  • 4.效率与低存储量需求:花的时间少即:时间复杂度低。不费内存即:空间复杂度低。

1.4 空间复杂度

  • 指算法消耗的存储空间(即算法除本身所需存储外的辅助空间)
  • 算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它是问题规模n的函数。记为S(n)=O(g(n))

1.5时间复杂度

  • 事前预估算法时间开销T(n)与问题规模 n 的关系 (T 表示“time“)

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

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

相关文章

人大金仓数据库分区表

分区表 声明式创建分区 按列创建分区(PARTITION BY LIST) 将学员表student按所在城市使用partition by list创建分区 创建分区表(基表) 创建格式 create table 表名(字段名 数据类型)PARTITION BY LI…

Redis哨兵工作原理 | 黑马Redis高级篇

哨兵的作用 Redis提供了哨兵机制来实现主从集群的自动故障恢复 监控:sentinel会不断检查master和slave是否按照预期工作 自动故障恢复:如果master故障,sentinel会将一个slave变为master,当故障实例恢复后也以新的master为主 通…

低代码平台助力交通行业数字化科学管理

编者按:本文分析了交通行业的数字化转型需求,并指出了适合交通行业的低代码平台的特性,最后通过相关案例进行了功能展示。关键词:对接能力,国产化,数据引擎,智能化交通运输是国民经济先导性、战…

3、基本的SELECT语句

文章目录1. SQL概述1.1 SQL背景知识1.2 SQL语言排行榜1.3 SQL 分类2 SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 (建议遵守)2.3 注 释2.4 命名规则(暂时了解)2.5 数据导入指令3 基本的SELECT语句3.0 SELECT...3.1 SELECT …

大数据技术架构(组件)15——Hive:内置UDAF函数

1.4.10、内置UDAF函数1.4.10.1、count--可以发现count(id)会把idnull的值剔除掉select count(1),count(*),count(distinct id),count(id) from test1.4.10.2、sumselect sum(1) from test;1.4.10.3、avg该函数太简单了,就不给大家演示了1.4.10.4、min该函数太简单了…

Hive(5):数据定义语言(DDL)

1 数据定义语言(DDL)概述 1.1 DDL语法的作用 数据定义语言 (Data Definition Language, DDL),是SQL语言集中对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database&#xff…

面试官问 ,Mybatis SELECT 查询, 集合或者单个对象,如果数据库不存在数据,需要判空吗?

前言 于昨日下班时段,本人正在与生活作斗争,收到了金三银四一线作战小队成员紧急反应的战况问题。 不熟悉的或者是不知道怎么去看源码的看官,上车了。 正文 这面试题问的, 考察的是什么? ① mybatis框架的应用掌握情…

如何实现报表集成?(三)——资源集成

在上一篇,我们介绍了用户同步和单点登录,帮助用户了解什么是用户同步、如何做用户验证,以及如何实现单点登录。 这一篇,我们看下如何做资源集成。行文过程中得到了来自报表软件厂商 Smartbi 的报表产品:电子表格软件的…

leetcode-每日一题-1663-具有给定数值的最小字符串(简单,贪心)

很久没有做过贪心类型的题目了,因为用的很少,大多都用的dp,这道题第一眼看过去以为是dp,因为力扣里面的中等题很多都是dp,但仔细一看发现是贪心,思路其实很简单,先全部最小,中间插一…

机械设备ERP系统可以给企业带来哪些好处?

随着信息化技术的进步与智能制造的发展趋势,很多制造企业也在一直探寻适合自己的信息化管理转型之路。机械设备EPR系统对于机械设备制造企业来说就是关键一环。要充分发挥出机械设备ERP系统的赋能作用,必不可少的是从生产制造的各个环节出发,…

ONLYOFFICE 文档 v7.3 现已发布:表单角色、SmartArt、安全性设置、查看窗口等功能

在 ONLYOFFICE 最新版本的在线编辑器中现已提供高级表单、SmartArt 图形插入、增强密码保护和公式计算、幻灯片特殊粘贴项等多项功能。继续阅读以了解所有更新。 字段填写接收人角色 现在,数字表单将更加高效。您可为需要填写表单的用户分配各种角色,简…

中医名词看不懂?用PaddleNLP做一个中医“百科全书”

我是一个深度学习爱好者,目前对自然语言处理感兴趣,热衷于了解一些人工智能中的数学推导和经典论文复现,正在成长的“小趴菜”一枚,在PPDE指导计划中,创作了中医文献阅读理解项目,下面将由我介绍在项目创作…

Java开发面试(技术面)经历 (二)

2022-11-08,应聘Java开发 :云智慧(实训机构,个人观点,与培训没区别) 今天二面技术面,问了一些问题 1.集合有哪些? 两大容器如图:Collection集合 list下面还有Vector&…

Veeam Backup Replication v12 发布 (含下载) - 面向所有工作负载的备份软件

Veeam Availability Suite v12 请访问原文链接:https://sysin.org/blog/veeam-backup-12/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 全球首屈一指的备份和恢复提供商 管理、控制、保护您的 数据&#xff…

数字化基本概念

数字化是什么?为什么要做数字化转型?感觉只是用计算机软件替代了原有的工作和流程。 听多了,每天的工作也被冠以数字化,说来很重要,确是不清楚为何,也来了解一下。 数字化:改变做事方式、发…

分享企业做微信小程序开发的步骤_公司如何申请微信小程序步骤

对于小程序新手来说,想要建立一个小程序,第一步就是要拥有一个小程序。那么如何开通小程序?公司小程序如何申请?今天就来手把手教你们如何开通小程序吧: 一、填写帐号信息 到微信公众平台首页,直接点击帐号…

android——开发中哪些习惯会影响卡顿的发生

开发中哪些习惯会影响卡顿的发生,如下:1.布局太乱,层级太深。1.1:通过减少冗余或者嵌套布局来降低视图层次结构。比如使用约束布局代替线性布局和相对布局。1.2:用 ViewStub 替代在启动过程中不需要显示的 UI 控件。1.…

C#学习记录——C# winform程序怎么打包成安装项目(VS2019图解)

今天学习将Winform程序打包成安装项目,参考网上教程,并记录尝试过程。 测试打包的程序为用C# Winform开的的一个客户端程序。 1、安装打包插件 在程序打包之前需要安装Microsoft Visual Studio Installer Projects插件。 1.1、选择扩展管理 在VS2019…

(面经四):笔试

面试经历(四) 时间:2022-11-14 笔试 (培训机构真该洗啊,写完后根本不看你写的笔试,直接给你说送你去培训,技术什么都没有问,直接拿着你的简历画画,画什么实训和培训的不同…

Docker建立自己的私有仓库

仓库(Repository)是集中存放镜像的地方。 一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务 器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说&am…