数据结构01绪论

第一章绪论

1.1 什么是数据结构

数据结构是一门研究非数值计算的程序设计问题中,计算机的操作对象以及他们之间的关系操作的学科。

面向过程程序=数据结构+算法

数据结构是介于数学、计算机硬件、计算机软件三者之间的一门核心课程。

数据结构是程序设计、编译、数据库、操作系统的基础。

1.2 基本概念和术语

数据 data:对客观事物的符号表示,在计算机中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据对象 data object:性质相同的数据元素的集合,是数据的一个子集。

数据元素 data element:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

一个数据元素可以由若干个数据项(data item)组成,数据项是不可分割的最小单位。

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

 

数据元素相互之间的关系称为结构(structure)。

集合

线性结构  一对一

树形结构  一对多

图状结构/网状结构  多对多

 

数据结构的形式定义(逻辑结构):

数据结构是一个二元组

其中:D是数据元素的有限集,S是D上关系的有限集。

 

物理结构/存储结构:数据结构在计算机中的表示(映像),包括数据元素的表示和关系的表示。

数据元素 <--> 元素(element)/结点(node)

   数据项 <--> 数据域(data field)

 

数据元素之间的关系在计算机中有两种不同的表示方法:

顺序映像 --> 顺序存储结构    借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

非顺序映像 --> 链式存储结构    借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑关系。

 

逻辑结构 --> 算法设计

物理结构 --> 算法实现

 

数据类型 data type:是一个值的集合 和定义在这个值集上的一组操作的总称。

按值得类型,可将数据类型分为两类:

原子类型

结构类型

在某种意义上,数据结构可以看成是“一组具有相同结构的值”;

则结构类型可以看成由一种数据结构和定义在其上的一组操作组成。

软件系统的框架应建立在数据之上,而不是建立在操作之上。即,面向对象。

 

抽象数据类型 Abstract Data Type,简称ADT:是指一个数学模型以及定义在该模型上的一组操作。

  |--值域:

      |--原子类型 atomic data type    原子类型的变量值是不可分解的,如基本数据类型

      |--固定聚合类型 fixed-aggregate data type    其值由确定数目的成分由某种结构组成,如复数

      |--可变聚合类型:表、树、图 variable-aggregate data type    值的数目不确定

      |--多形数据类型 ploymorphic data type    多型数据类型,就是泛型,如Triplet

  |--操作

 

抽象数据类型可用以下三元组表示:

                          

其中:D是数据对象,S是D上的关系集,P是对D的基本操纵。

 

基本操作有两种参数:

赋值参数--只为操作提供输入值;

引用参数--以&打头,为操作提供输入值,并且返回操作结果。

 

1.4 算法和算法分析

算法:有穷性、确定性、可行性、输入、输出

设计要求:正确性、可读性、健壮性、时间复杂度、空间复杂度

 

算法效率的度量:

一个特定算法的运行工作量的大小,只依赖于问题的规模n,即它是问题规模n的函数。

一个算法是由控制语句(顺序、选择、循环)和原操作(固有数据类型的操作)构成的,算法的时间取决于两者的综合效果。

最深层循环内的语句中的原操作

T(n) = O(f(n))

随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度(asymptotic time complexity),简称时间复杂度

最坏情况下的时间复杂度。

  常量阶

  对数阶

  线性阶

  平方阶

  指数阶

 

算法的存储空间需求:

空间复杂度(space complexity)

若额外空间相对于输入数据量来说是常数,则称此算法为原地工作。

 

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

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

相关文章

css3动画、2D与3D效果

1.兼容性 css3针对同一样式在不同浏览器的兼容 需要在样式属性前加上内核前缀&#xff1b; 谷歌&#xff08;chrome&#xff09; -webkit-transition: Opera&#xff08;欧鹏&#xff09; -o-transition: Firefox&#xff08;火狐&#xff09; -moz-transition Ie -ms-tr…

数据结构02线性表

第二章 线性表 C中STL顺序表&#xff1a;vector http://blog.csdn.net/weixin_37289816/article/details/54710677链表&#xff1a;list http://blog.csdn.net/weixin_37289816/article/details/54773406在数据元素的非空有限集中&#xff1a; (1)存在唯一一个被称作“第…

训练一个神经网络 能让她认得我

写个神经网络&#xff0c;让她认得我(๑•ᴗ•๑)(Tensorflow,opencv,dlib,cnn,人脸识别) 这段时间正在学习tensorflow的卷积神经网络部分&#xff0c;为了对卷积神经网络能够有一个更深的了解&#xff0c;自己动手实现一个例程是比较好的方式&#xff0c;所以就选了一个这样比…

数据结构03栈和队列

第三章栈和队列 STL栈&#xff1a;stack http://blog.csdn.net/weixin_37289816/article/details/54773495队列&#xff1a;queue http://blog.csdn.net/weixin_37289816/article/details/54773581priority_queue http://blog.csdn.net/weixin_37289816/article/details/5477…

树莓派pwm驱动好盈电调及伺服电机

本文讲述如何通过树莓派的硬件PWM控制好盈电调来驱动RC车子的前进后退&#xff0c;以及如何驱动伺服电机来控制车子转向。 1. 好盈电调简介 车子上的电调型号为&#xff1a;WP-10BLS-A-RTR&#xff0c;在好盈官网并没有搜到对应手册&#xff0c;但找到一份通用RC竞速车的电调使…

数据结构04串

第四章 串 STL&#xff1a;string http://blog.csdn.net/weixin_37289816/article/details/54716009计算机上非数值处理的对象基本上是字符串数据。 在不同类型的应用中&#xff0c;字符串具有不同的特点&#xff0c;要有效的实现字符串的处理&#xff0c;必须选用合适的存储…

CAS单点登录原理解析

CAS单点登录原理解析 SSO英文全称Single Sign On&#xff0c;单点登录。SSO是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统。CAS是一种基于http协议的B/S应用系统单点登录实现方案&#xff0c;认识CAS之前首先要熟悉http协议、Session与Co…

数据结构05数组和广义表

第五章 数组 和 广义表 数组和广义表可以看成是线性表在下述含义上的扩展&#xff1a;表中的数据元素本身也是一个数据结构。 5.1 数组的定义 n维数组中每个元素都受着n个关系的约束&#xff0c;每个元素都有一个直接后继元素。 可以把二维数组看成是这样一个定长线性表&…

数据结构06树和二叉树

第六章 树和二叉树 6.1 树的定义和基本术语 树 Tree 是n个结点的有限集。 任意一棵非空树中&#xff1a; &#xff08;1&#xff09;有且仅有一个特定的称为根&#xff08;root&#xff09;的结点&#xff1b; &#xff08;2&#xff09;当n>1时&#xff0c;其余结点可…

CountDownLatch,CyclicBarrier和Semaphore

在java 1.5中&#xff0c;提供了一些非常有用的辅助类来帮助我们进行并发编程&#xff0c;比如CountDownLatch&#xff0c;CyclicBarrier和Semaphore&#xff0c;今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲&#xff1a;一.CountDownLatch用法二.CyclicBarrie…

数据结构07排序

第十章内部排序 10.1 概述 排序就是把一组数据按关键字的大小有规律地排列。经过排序的数据更易于查找。 排序前KiKj&#xff0c;且Ki在前: 排序方法是稳定的&#xff0c;若排序后Ki在前&#xff1b; 排序方法是不稳定的&#xff0c;如排序后Kj在前。 分类&#xff1a; 内…

数据结构08查找

第九章 查找 另一种在实际应用中大量使用的数据结构--查找表。 所谓查找&#xff0c;即为在一个含有众多的数据元素的查找表中找出某个“特定的”数据元素。 查找表 search table 是由同一类型的数据元素构成的集合。集合中的数据元素之间存在着完全松散的关系&#xff0c;故…

下载Centos7 64位镜像

下载Centos7 64位镜像 1.打开Centos官网 打开Centos官方网站地址&#xff1a;https://www.centos.org/&#xff0c;点击Get CentOS Now 2.点击Minimal ISO镜像 Minimal ISO镜像&#xff0c;与DVD ISO镜像的差别有很多&#xff0c;这里只说两点 1.Minimal ISO类似于Windows的纯净…

Scala01入门

第1章 可伸展的语言 Scala应用范围广&#xff0c;从编写脚本&#xff0c;到建立大型系统。 运行在标准Java平台上&#xff0c;与Java库无缝交互。 更能发挥力量的地方&#xff1a;建立大型系统或可重用控件的架构。 将面向对象和函数式编程加入到静态类型语言。 在Scala中&a…

Java网络01基本网络概念

协议 Protocol&#xff1a;明确规则 &#xff08;1&#xff09;地址格式&#xff1b; &#xff08;2&#xff09;数据如何分包&#xff1b; ... TCP/IP四层模型&#xff1a; 应用层 HTTP SMTP POP IMAP 传输层 TCP UDP 网际层 IP 主机网络层 host to host layer 数模、…

Java网络02基本Web概念

URI Uniform Resource Identifier 同一资源标识符 以特定语法标识一个资源的字符串 绝对URI&#xff1a;URI模式模式特有部分 scheme:scheme-specific-part scheme分为&#xff1a; data file本地文件系统 ftp http telnet urn 统一资源名 scheme-specific-part为&am…

解决自建ca认证后浏览器警告

前一篇讲解了基本的建立证书的过程&#xff0c;但是建立后总是会在浏览器那里警告&#xff1a; 此链接不是私密链接 --谷歌浏览器 此证书颁发机构不可信 此证书不是这个网站的 --ie浏览器 总之证书是生成成功了&#xff0c;但是其中的内容填写错误了&a…

Java网络03流

网络程序所做的很大一部分工作只是输入和输出&#xff1a;从一个系统向另一个系统移动数据。 输出流 Java的基本输出流类是java.io.OutputStream: public abstract class OutputStream 这个类提供了写入数据所需的基本方法&#xff0c;包括&#xff1a; public abstract vo…

基于微信小程序开发的仿微信demo

(本文参考自github/liujians,地址:https://github.com/liujians/weApp) 作者声明&#xff1a; 基于微信小程序开发的仿微信demo 整合了ionic的样式库和weui的样式库 使用请查看使用必读! 更新日志请点击这里 目前功能 查看消息 网络请求获取数据&#xff08;download示例server…

解决idea 中web项目无法正常显示的问题

转载于:https://www.cnblogs.com/nulijiushimeili/p/10575364.html