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

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

  在工作中我是用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。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

机器学习--Apriori算法

一、基本原理 关联分析(association analysis)就是从大规模数据集中寻找物品间的隐含关系。这里的主要问题是,寻找物品的不同组合是一项十...

3426
来自专栏用户2442861的专栏

MATLAB 中有哪些命令,让人相见恨晚?

提问都说了是命令,大家回答那么多函数干什么... 我来给一个超级大杀器 在命令行敲入 dbstop if error

731
来自专栏AI派

Numpy 修炼之道 (13)—— 将python函数向量化

想要实现将python函数向量化,Numpy中的vectorize 和frompyfunc函数都可以满足要求。

3487
来自专栏数据分析

[数据清洗]- Pandas 清洗“脏”数据(二)

概要 了解数据 分析数据问题 清洗数据 整合代码 了解数据 在处理任何数据之前,我们的第一任务是理解数据以及数据是干什么用的。我们尝试去理解数据的列/行、记录、...

2914
来自专栏阿凯的Excel

或关系求均值(函数虐心版)

最近醉心于Python的学习和分享,好久没有分享Excel相关的文章了。 熟悉我文章的朋友,都知道我特喜欢分享数组函数,也特喜欢分享那种很长的函数。 前几天有朋...

3486
来自专栏蜉蝣禅修之道

Apriori算法的Python实现

1494
来自专栏WindCoder

求一个班学生的数学平均成绩、最高分、最低分

/* 功能:求一个班学生的数学平均成绩、最高分、最低分 日期:2013-05-08 */

422
来自专栏青玉伏案

算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)

开门见山,本篇博客就介绍图相关的东西。图其实就是树结构的升级版。上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些...

16310
来自专栏技术翻译

与机器学习算法相关的数据结构

我不认为机器学习中使用的数据结构与在软件开发的其他领域中使用的数据结构有很大的不同。然而,由于许多问题的规模和难度,掌握基本知识是必不可少的。

1073
来自专栏算法channel

机器学习|快速排序思想求topk

01 — Topk by quicksort 问题是求出数据集中,按照某个规则定义的元素大小,取前k个元素。 为了简化起见,直接求数值型数组的前k个最大元素。...

4078

扫码关注云+社区