2019-01-26 20:59:43 longgeqiaojie304 阅读数 109
  • 数据结构和算法视频教程

    数据结构、算法视频培训课程,该教程主要是介绍在游戏开发中经常使用的数据结构,例如数组,链表,栈,队列,二叉树,递归等重要知识点讲解以及将它们里灵活的运用到算法里面。

    88878 人正在学习 去看看 姜雪伟

数据结构概述

1、为什么要学习数据结构

(1)数据结构是所有计算机专业的同学必学的课程;

(2)数据结构研究的是数据如何在计算机中进行组织和存储的,使得我们可以高效的获取数据或者修改数据;

 

2、数据结构分类

(1)线性结构

       数组;栈;

 

       队列;链表;

 

       哈希表……

(2)树结构

       二叉树;二分搜索树;

 

       AVL;红黑树

      

       Treap;Splay;

 

       堆;Trie;

 

       线段树;K-D树;

 

       并查集;哈夫曼树……

 

(3)图结构

       邻接矩阵;邻接表;

我们需要根据不同的应用,灵活选择最合适的数据结构

 

3、计算机世界里,数据结构无处不在

(1)数据库场景

数据库底层是通过很多数据结构制作而成的,数据库主要目的就是用来存储数据的。

(2)操作系统场景

操作系统底层也是通过很多数据结构制作而成的。

系统栈:递归调用就需要借助系统栈空间。

堆:主要用于组建优先队列数据结构,通过比较优先队列优先级来进行多任务切换。

操作系统支持快速在多任务间切换

(3)文件压缩场景

简单的压缩算法可以使用哈夫曼树数据结构,但是下面文件格式并不是全部使用哈夫曼树数据结构。

(4)通讯录场景

通讯录产品:微软当时的一款使用链表数据结构来存储联系人,但是当联系人数量越来越大的时候,查询联系人是非常缓慢的。后来这个问题被微软一个实习生解决了,他使用了一种Trie-前缀树数据结构来解决的。不管你的通讯录数量有多大,查询联系人都是毫秒级别的。

(5)游戏场景

DFS:深度优先算法;

BFS:广度优先算法;

数据结构 + 算法 = 程序

4、常用数据结构学习

 

(1)面向面试数据结构

       数组;栈;队列;链表;二分搜索树;堆;

(2)面向竞赛数据结构

       线段树;Trie;并查集;

(3)世界性的计算机题库网站

       https://leetcode.com/

后面章节笔记主要内容:

  1. 递归;调试;简单的复杂度分析;
  2. 底层实现;创建自己的小型数据库;
  3. 数据结构的优化和比较;

 

如果感兴趣的童鞋,可以观看我下一篇博客:学习数据结构(和算法)到底有没有用?

 

 

 

2019-09-27 14:54:34 zhanghuaichao 阅读数 208
  • 数据结构和算法视频教程

    数据结构、算法视频培训课程,该教程主要是介绍在游戏开发中经常使用的数据结构,例如数组,链表,栈,队列,二叉树,递归等重要知识点讲解以及将它们里灵活的运用到算法里面。

    88878 人正在学习 去看看 姜雪伟

 

最近在学习数据结构,有必要对自己这两天的学习做一个总结,今天就来总结下,数据结构的逻辑结构

按照分类标准的不同,我们把数据结构分为逻辑机构和存储结构,今天主要讲解逻辑结构

逻辑结构:是指数据对象中的数据元素之间的相互关系,主要分为以下四种结构

1.集合结构

集合结构中的数据元素处理同属于一个集合里,它们之间没有其他关系。各个数据元素是“平等”的,它们的共同属性是“同属于一个集合”。数据结构中的集合关系就类似于数学中的集合,满足集合的三个基本性质,确定性,互异性,无序性,而满足这个性质的应该只有C语言里的结构体满足这个条件,因为结构体里的数据无序,互异,确定。

 2.线性结构

线性结构中的数据元素之间存在一对一的关系,满足这个关系的有  线性表(数组,vector,链表),队列,栈,串

下面具体解释下原因:先看定义

线性表:零个或者是多个数据元素的有限序列。

下面对其定义进行下充分的解读,首先它是一个序列,也就是说元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且之后一个前驱和后继。然后线性表强调是有限的,当元素个数为零个时称为空表。

所以线性表的元素之间是满足一对一的关系的

栈:栈(stack)是限定仅在表尾进行插入和删除操作的线性表,是一种特殊的线性表,所以属于线性结构

队列:队列(queue)是只允许在一端进行插入操作,而在另外一端进行删除操作的线性表,是一种特殊的线性表,所以属于线性结构

串:串(string)是由零个或者多个字符组成的有限序列。

看定义我们就能清楚的看到,串是特殊的线性表,只是把定义中的数据元素换成了特定的字符元素,所以串也是属于线性结构

一般情况下,把栈,队列,串,分为一组叫受限线性表。

3.树形结构

树形结构中的数据元素之间存在一种一对多的层次关系,一般分为一般树和二叉树,满足这个关系的有 set,map

4.图形结构

图形结构的数据元素是多对多的关系,一般分为有向图和无向图,

最后可以画一个思维导图进行下总结

由于暂时没有找到之前画的图,这里有一处错误更正,集合的常见结构不是结构体,结构体本身不算是数据结构,因为结构体里存放的不是相同的数据元素,这里的集合应该是哈希表,又叫散列表。

2018-12-30 19:37:55 chengxu_kuangrexintu 阅读数 99
  • 数据结构和算法视频教程

    数据结构、算法视频培训课程,该教程主要是介绍在游戏开发中经常使用的数据结构,例如数组,链表,栈,队列,二叉树,递归等重要知识点讲解以及将它们里灵活的运用到算法里面。

    88878 人正在学习 去看看 姜雪伟

什么是数据结构

数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中元素之间的关系组成。

数据结构的分类

  1. 数据的存储结构
  2. 数据的逻辑结构

1.数据的存储结构

分类

①顺序存储结构
②链式存储结构

①顺序存储结构

顺序存储结构是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。数组就是顺序存储结构的典型代表。
在这里插入图片描述

②链式存储结构

在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).
在这里插入图片描述

两种方式的区别

  • 链表存储结构的内存地址不一定是连续的,但顺序存储结构的内存地址一定是连续的;
  • 链式存储适用于在较频繁地插入、删除、更新元素时,而顺序存储结构适用于频繁查询时使用。

2.数据的逻辑结构

分类

  1. 集合结构
  2. 线性结构
  3. 树形结构
  4. 图形结构

①集合结构

集合结构中的数据元素同属于一个集合,他们之间是并列关系,除此之外没有其他关系。
在这里插入图片描述

②线性结构

线性结构中的元素存在一对一的相互关系。
在这里插入图片描述

③树形结构

树形结构中的元素存在一对多的相互关系。
在这里插入图片描述

④图形结构

图形结构中的元素存在多对多的相互关系。
在这里插入图片描述

2020-03-18 16:49:58 qq_41959899 阅读数 36
  • 数据结构和算法视频教程

    数据结构、算法视频培训课程,该教程主要是介绍在游戏开发中经常使用的数据结构,例如数组,链表,栈,队列,二叉树,递归等重要知识点讲解以及将它们里灵活的运用到算法里面。

    88878 人正在学习 去看看 姜雪伟

目录

数据结构绪论

基本概念

三要素

算法


基本概念

  • 数据

  • 数据元素、数据结构

  • 数据类型、抽象数据类型(ADT)

 

三要素

1.逻辑结构

基本:

  1. 集合结构
  2. 线性结构
  3. 树形结构
  4. 图状结构(网状结构)

分类

  1. 线性结构
  2. 非线性结构

2.数据的运算

定义:针对数据的逻辑结构

实现:针对数据的存储结构

3.物理结构(存储结构)

顺序存储

非顺序存储

 

算法

  • 基础

产生

程序=数据结构+算法

特性

  1. 有限性
  2. 确定性
  3. 可行性
  4. 输入
  5. 输出

“好”算法特质:

正确、可读、健壮、高效(时间复杂度低)低耗(空间复杂度低)

 

  • 性能

时间复杂度T(n)

如何计算?

  1. 忽略顺序执行的代码 ,因为其只影响常常数
  2. 只挑选一个循环中的基本操作
  3. 若存在多层嵌套,只关注最深层循环的次数

常用技巧:

从优至劣 常对幂指阶

三种复杂度:

最好、最坏、平均(所有输入的数据等概率)

空间复杂度S(n)

何如计算?

递归调用的次数

 

 

 


 

 

 

 

 

 

2019-01-23 20:54:44 zhanglinlang 阅读数 66
  • 数据结构和算法视频教程

    数据结构、算法视频培训课程,该教程主要是介绍在游戏开发中经常使用的数据结构,例如数组,链表,栈,队列,二叉树,递归等重要知识点讲解以及将它们里灵活的运用到算法里面。

    88878 人正在学习 去看看 姜雪伟

什么是数据结构:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合

    数据结构可以分成 数据与结构来讲解:

数据:
1、是描述客观事物的符号。
2、可以被计算机识别,读取,处理的符号。

(比如你存在银行里的钱, 那么钱是客观事物,存在银行里的钱需要使用各种符号来被计算机处理,例如。 数量,单位,存储时间,都是数据)。

数据实例:
数值型 (整型、浮点型 等等)
非数值型(abcd、声音、视频、图形)

数据元素:
数据元素 是数据的基本单位。(可以理解为 java 中的 class )
通常被当初整体来处理。
我们也称为一条记录

数据项:
一个数据元素,是由多个数据项组成。(可以理解成 java中 class的 属性)

一、逻辑结构(人的思维)

集合结构:数据元素同属于一个结构,但是他们之间没有其他联系。

在这里插入图片描述
线性结构:数据元素之间是一对一的关系。
在这里插入图片描述
树形结构:数据元素之间是一对多的关系。
在这里插入图片描述
图形结构:数据元素之间是多对多的关系。
在这里插入图片描述

二、存储结构:(计算机中如何存储)
在计算机中:(可分为)
顺序结构: 数据存储在连续的物理单元中,
链式结构。吧数据放在任意的存储单元,每个元素会记录下个元素的位置。

抽象数据类型:
分为:
原子型:不能再分的基本类型 (int ,float,double …)
构造型:有若干院子类型或者构造类型组合而成的 (java 中的对象)
抽象:
是指一个数据模型定义该模型上的一组操作。
仅与逻辑有关,与储存结构无关。
对具体事物的概括(java 中的 class)

JDK1.9-数据结构

阅读数 38

数据结构

阅读数 106

没有更多推荐了,返回首页