数据结构与算法综述
什么是数据结构?
学习它们后会有什么好处?
为什么只使用数组和for循环来处理数据?
何时何地使用学到的知识才算有意义?
1. 数据结构的概述
数据结构是对计算机内存(有时在磁盘中)的数据的一种安排。数据结构包括数组,链表,栈,二叉树,哈希表
等等。算法则对这些结构中的数据进行各种处理。
掌握这些知识我们能够解决哪些问题?大概有三类情况:
l 现实世界数据存储
l 程序员的工具
l 建模
有些数据结构能直接对真实世界的情况构造模型。例如,队列模拟顾客在银行中排队等待的模型
数据结构的特性
|
数据结构 |
优点 |
缺点 |
|
数组 |
插入快,如果知道下标,可以非常快速的存取 |
查找慢,删除慢,大小固定 |
|
有序数组 |
比无序的数组查找快 |
删除和查找慢,大小固定 |
|
栈 |
提供后进先出方式的存取 |
存取其他项很慢 |
|
队列 |
提供先进先出方式的存取 |
存取其他项很慢 |
|
链表 |
插入快,删除快 |
查找慢 |
|
二叉树 |
查找,删除,插入都很快(如果树保持平衡) |
删除算法复杂 |
|
红-黑树 |
查找,删除,插入都很快。树总是平衡的 |
算法复杂 |
|
|
查找,删除,插入都很快。树总是平衡的。类似的树 对磁盘存储有用 |
算法复杂 |
|
哈希表 |
如果关键字已知则存取速度很快,插入快 |
删除慢,如果不知道关键字则存取 很慢,对存储空间使用不充分 |
|
堆 |
插入,删除快,对最大数据项的存取很快 |
对其他数据项存取慢 |
|
图 |
对现实世界建模 |
有些算法慢且复杂 |
(ps:在这里对特性只能囫囵吞枣地吸收一下,具体的特性只能靠以后学习中领悟了)
数据结构除了数组之外都可以被认为是抽象数据结构(ADT)。
2. 算法的概述
l 对大多数数据结构来说,都需要知道如何
l 插入一条新的数据
l 寻找某一特定的数据
l 删除某一特定的数据
l 以及如何迭代地访问某一数据结构中的各数据项,以便进行显示和其他操作
l 排序
l 递归
3.一些定义
了解数据库的人,应该很容易的了解这些定义
记录(record)相当于数据库中的表,该记录有相关的 字段(filed)组成。在面向对象中语言中,记录常被
表示成为一个相对应的类。一个实例中各个变量表示不同的数据字段(data filed),在C#中,称为字段(成员)
浙公网安备 33010602011771号