数据结构(一)之基础知识

学习数据结构主要源于以下原因:

  在工作中我是用meteor在做项目,前后台都要写,服务端是用的node。之前有和同事做过一个邮箱功能,性能测试时并发量一高就发送失败。我认为处理并发量的问题应该需要数据结构与算法和设计模式这三点来优化。这是往大了说,细说就是工作中,功能每次都是加班超快赶,在多人合作下,如果代码结构与逻辑混乱,后期维护困难,功能不好扩展。由于我们组都是前端人员接下这个项目,对于数据库的设计经验缺乏,才一再出现性能问题,所以我认为学习数据结构与算法尤为重要。本人也是正在学习中,有问题欢迎大家指正。

  第一篇笔记先说说数据结构的基础:

  一·术语:

    1.数据:描述客观事物的符号,是计算机中可以操作的对象,能被计算机识别,并输入给计算机处理的符号集号。个人理解就好像变量一样。 

    2.数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。比如人类的数据元素是人。重点在于整体

    3.数据项:一个数据元素可以由若干个数据项组成,重点在于单个,是不可分割的最小单位。比如:一个person集合(数据元素)由‘name‘,‘age‘(数据项)来组成。

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

  二.数据的逻辑结构与物理结构:

    1.逻辑结构分为集合结构,线性结构,树形结构,图形结构

    (1)集合结构:数据元素除了同属一个集合外,没有其他关系,元素之间是‘平等‘关系。

  

集合结构示例图

    (2)线性结构:线性结构中的元素存在一对一的关系

线性结构示例图

    (3) 树形结构:树形结构中的数据存在一对多的层次关系,我们常用的二叉树结构就是树形结构中的一种

 

树形结构示例图

    (4)图形结构:图形结构的数据元素是多对多的关系

图形结构示例图

    注:一般在设计一个数据结构时,我们习惯将数据元素看做一个结点,用圆表示。元素之间的逻辑关系用连线表示,如果有方向的,可以用带箭头的连线表示。

    2.物理结构:是指数据的逻辑结构在计算机中的存储形式。这里主要指内存,像硬盘,软盘主要用文件结结来描述。

    (1)顺序存储:把数据元素存在地址连续的存储单元里

 顺序存储结构示例图

    (2)链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据在哪没关系,只要指针存放相应的地址知道下一个就到你了就行。

链式存储结构示例图

  三.抽象数据类型

    1.数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。比如在javascript中有number,string,boolean,null,undefined,object

    2.抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。比如在数学的坐标轴中,有(x,y)也有(x,y,z),那么我们可以定义一个轴象数据类型point。

  总结:本篇主要介绍数据结构中的一些术语,虽然都是些概念,不是很好理解,但在之后的学习中结合一些练习与应用,会帮助我们理解。下一篇将介绍一下算法的基础知识,数据结构的学习离不开算法。两者相结合才能体现彼此的优点,发挥正真的作用。我的学习主要参考《大话数据结构》《算法》《数据结构》,大家可以去了解。

时间: 2024-10-29 04:52:19

数据结构(一)之基础知识的相关文章

数据结构和算法一(基础知识)

一.数据结构与算法基础知识 从广义上讲,数据结构就是指一组数据的存储结构.算法就是操作数据的一组方法. 从狭义上讲,就是指某些著名的数据结构和算法,比如队列.栈.堆.二分查找.动态规划等. 数据结构和算法是相辅相成的,数据结构为算法服务,算法要作用在特定的数据结构之上. 数据结构思维导图 基础数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie树 基础算法:地柜.排序.二分查找.搜索.哈希算法.贪心算法.分治算法.回溯算法.动态规划.字符串匹配算法 二.时间复杂度和空间复杂度

《计算机科学导论》之数据结构基础知识

<计算机科学导论(第二版)>  11章   数据结构 11.1  引言  1.为什么要使用数据结构? 尽管单变量在程序设计语言中被大量使用,但是它们不能有效地解决复杂问题.此时考虑使用数据结构. 2.数据结构是什么? 数据结构是相互之间存在一种或多种特定关系的数据元素的集合. 3.三种数据结构 数组: 记录; 链表: 大多的编程语言都隐式实现了前两种,而第三种则通过指针和记录来模拟. 11.2  数组 1.为什么使用数组? 为了处理大量的数据,需要一个数据结构,如数组.当然还有其他的数据结构.

PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

一.程序设计 1.设计功能系统--数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理--原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的特性--PHP框架的差异和优缺点 三.算法与数据结构 1.常见算法--算法的概念.时间复杂度和空间复杂度.常见排序算法.常见查找算法 2. 3. 4. 四.高并发解决方案 1. 2. 原文地址:https://www.cnblogs.com/darklights/p/9275751.html

线段树基础知识----(基础数据结构)--(一)

1.定义 引入:为什么要使用线段树而不用数组模拟呢? answer:因为有些题用数组来做就要超时,用线段树的O(log(n))的时间复杂度刚好可以求解 毫无疑问线段树是一种数据结构,但是它实际是一个类似树状的链表结构(个人认为) ///还是要正经一点(照搬教科书)----------- / ////////////////////////////////////////////////////////////////////// 线段树定义:线段树是一种二叉搜索树,与区间树相似,它将一个区间划分

【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识

前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy.Pandas和Matplotlib三个包.目录:        一.Python常用扩展包        二.Numpy科学计算包        三.Pandas数据分析包        四.Matplotlib绘图包 前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.K

服务器架设笔记——Apache模块开发基础知识

通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API.虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统.(转载请指明出于breaksoftware的csdn博客) 为了实现最基础的URL解析等功能,我把<Apache模块开发指南>一书粗略了翻看了两遍,以利于迅速了解Apache模块编程的相关知识.至于书中具体的知识点,我并不在此赘述.但是为了便于大家了解之后遇到的各种相关的知识点,我大致罗列几条(摘

JS基础知识回顾:引用类型(一)

在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起,而对象时引用类型的一个实例. 尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构,所以虽然说引用类型与类看起来想死,但他们并不是相同的概念. 不过引用类型有的时候也可以被称为对象定义,因为他们描述的是一类对象所具有的属性和方法. 新对象是使用new操作符后跟一个构造函数来实现的,构造函数本身就是一个函数,只不过该函数时处于创建新对象的目的而定义的. ECMASc

3.Swift基础知识

Swift是用来开发iOS和OS X应用的新语言,但是许多地方用起来跟C或者OC是差不多的. Swift提供了C语言和OC的基本数据类型,比如整型用Int,浮点型用Double或者Float,布尔型用Bool,字符串文本用String,Swift还提供了两种集合类型,Array和Dictionary,后面会介绍. Swift也跟C一样用唯一的变量名来存储与使用数据,还能使用一些值不会变的变量,应该说是常量,比C里面的常量要强大.在涉及到一些值不会发生变化的数据时使用常量类型能让代码更安全整洁.

iOS开发基础知识--碎片3

iOS开发基础知识--碎片3  iOS开发基础知识--碎片3 十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice currentDevice].model; //系统版本型号,如iPhone OS return [UIDevice currentDevice].systemVersion; //系统版本名称,如6.1.3 return [UIDevice