数据结构主要用来组织数据,也作为数据的容器,载体。
各种各样的算法,都需要使用一定的数据结构来组织数据。
常见的典型数据结构有:
- 链表
- 栈和队列
- 树
- 图
上述可以延伸出各种各样的术语和结构,如列表,集合,哈希表,堆,优先队列,二叉树,红黑树,B+树以及各种变种等。
我们区别开数据结构和算法,是因为算法是更高层次的一种智慧结晶,目的就是为了解决问题,基本的算法分类有:
- 排序算法
- 查找算法
- 图相关的算法
- 其他的算法
计算机科学作为数学的一个分支,大部分的数学知识都是离散数学。我们学习微积分,都是连续的量,可是计算机处理的都是离散的量,数据不存在渐变,都是一个个离散数据。
所以针对离散的计算机科学来说,很多算法都是很简单,也是富含哲学的。 也就是说,现在已知的所有算法,都是严格定义的,是死的,是千篇一律的。作为解决日常生活的一种思路,不需要纠结算法是什么分类,只要知道有这种方法,在什么时候需要使用它就行了。
一般在日常工程开发中,也就是做软件,做网站,基本只使用到排序和查找算法,甚至有些情况下不需要使用。100%的日常开发场景是,我拿到一个数据存在数据库,你需要这个数据,我再帮你找出来。
我们会在后面的篇章介绍这些数据结构和算法。