数据结构分为数据和结构。数字、字符、图形、声音等都是数据。结构分逻辑结构和存储结构。逻辑结构就是数据间的抽象化关系。存储结构就是数据在计算机存储器(内存、磁盘)的存储方式。数据结构研究的就是数据如何在计算机内存储的问题。数据结构包括数组、栈、二叉树、哈希表等等。
算法就是计算机内对给定问题的处理过程,说白了就是对数据结构中的数据进行各种处理,比如对数据排序、查找等。
计算机处理数据的过程:数据的输入—->计算机的处理—>数据输出
对于原始数据如何进行组织,如何在计算机内存储,便于节省空间和计算机处理;如何选择合适的算法提高解决问题的效率和可靠性,都是很重要的,不能孤立讨论。
算法只有在合适的数据结构上才能发挥作用,数据结构的不同,会影响算法的选择和效率。
有科学家这样总结:算法+数据结构=程序
前面概念有一定了解后,了解一下应用场景。
现实数据存储:
将现实世界的计算机外部的物理实体数据存储在计算机里。比如一条人事档案记录一个真实人的信息。
程序员的工具:
用链表、栈、队列等结构作为工具来简化另一些操作。
对现实世界进行建模:
用数据结构对现实世界进行构造模型。像图,用它表示城市之间的航线、电路的连接等。
大致了解数据结构的特性:
数据结构 | 优点 | 缺点 |
数组 | 插入快,知道下标可快速存取 | 查找慢,删除慢,大小固定 |
有序数组 | 比无序数组查找快 | 插入、删除慢,大小固定 |
栈 | 后进先出的方式存取 | 存取其他项很慢 |
队列 | 先进先出的方式存取 | 存取其他项很慢 |
链表 | 插入、删除快 | 查找慢 |
二叉树 | 插入、删除、查找都快(如果树保持平衡) | 删除算法复杂 |
红-黑树 | 插入、删除、查找都快(树总是平衡的) | 算法复杂 |
2-3-4树 | 插入、删除、查找都快(树总是平衡的)类似的树对磁盘存储有用 | 算法复杂 |
哈希表 | 如果关键字已知,存取极快,插入快 | 删除慢,关键字未知,存储慢,对磁盘空间利用不充分 |
堆 | 插入、删除快,对最大数据项的存取很快 | 对其他数据项存取慢 |
图 | 对现实世界建模 | 有些算法慢且复杂 |
以上除数组外,其他称为抽象数据结构(ADT)。
原文地址:http://blog.csdn.net/zwto1/article/details/46400107