- 在线播放
- 分集下载
- 01 数据结构和算法绪论
- 02 谈谈算法
- 03 时间复杂度和空间复杂度
- 04 时间复杂度和空间复杂度2
- 05 时间复杂度和空间复杂度3
- 06 线性表
- 07 线性表2
- 08 线性表3
- 09 线性表4
- 10 线性表5
- 11 线性表6
- 12 线性表7
- 13 线性表8
- 14 线性表9
- 15 线性表10
- 16 单链表小结:腾讯面试题
- 17 线性表12
- 18 约瑟夫问题
- 19 线性表14
- 20 魔术师发牌问题
- 21 线性表16
- 22 线性表17
- 23 栈和队列
- 24 栈和队列2
- 25 进制转换
- 26 栈和队列4
- 27 逆波兰计算器
- 28 1中缀表达式转换为后缀表达式(上)
- 28 2中缀表达式转换为后缀表达式(下)
- 29 栈和队列7
- 30 栈和队列8
- 31 递归和分治思想
- 32 递归和分治思想2
- 33 汉诺塔
- 34 八皇后问题
- 35 字符串
- 36 KMP算法
- 37 KMP算法2
- 38 KMP算法之NEXT数组代码原理分析
- 39 KMP算法之实现及优化
- 40 树
- 41 树的存储结构
- 42 树的存储结构2
- 43 二叉树
- 44 二叉树2
- 45 二叉树的存数结构
- 46 二叉树的遍历
- 47 二叉树的建立和遍历算法
- 48 线索二叉树
- 49 线索二叉树代码实现
- 50 树、森林及二叉树的相互转换
- 51 赫夫曼树
- 52 赫夫曼编码
- 53 赫夫曼编码C语言实现
- 54 图
- 55 图的定义与术语2
- 56 图的存储结构
- 57 图的存储结构(邻接表)
- 58 图的存储结构(十字链表、邻接多重表、边集数组)
- 59 图的遍历(深度优先遍历)
- 60 马踏棋盘算法(骑士周游问题)
- 61 图的遍历(广度优先遍历)
- 62 最小生成树(普里姆算法)
- 63 最小生成树(克鲁斯卡尔算法)
- 64 最短路径(迪杰斯特拉算法)
- 65 最短路径(弗洛伊德算法)
- 66 拓扑排序
- 67 关键路径
- 68 关键路径(代码讲解)
- 69 查找算法
- 70 插值查找(按比例查找)
- 71 斐波那契查找(黄金分割法查找)
- 72 线性索引查找
- 73 二叉排序树
- 74 二叉排序树的查找、插入和删除
- 75 二叉排序树的查找、插入和删除2
- 76 平衡二叉树
- 77 平衡二叉树的实现原理
- 78 平衡二叉树的实现原理(代码实现)
- 79 多路查找树之2-3树
- 80 多路查找树之2-3树的插入原理
- 81 多路查找树之2-3树的删除原理
- 82 多路查找树之2-3-4树和B树
- 83 散列表(哈希表)查找
- 84 散列函数的构造方法
- 85 处理散列冲突的方法
- 86 散列表查找的代码实现
- 87 排序算法
- 88 冒泡排序
- 89 选择排序
- 90 直接插入排序
- 91 希尔排序
- 92 堆排序
- 93 堆排序的代码实现
- 94 归并排序
- 95 归并排序(迭代实现)
- 96 第九十六讲 快速排序
- 97 快速排序的优化
- 98 总结回顾
数据结构与算法的相关介绍
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。