实际项目中除了概念的抽象之外,实际对象数据量很多情况下,数据存储关系以及数据的获取也是一项重要的问题。问题的解决思路,对应的算法也是一项非常重要的工作,这种类型的工作往往和实际的应用场景有关系。第一项数据抽象以及数据之间的关联关系,其核心是设计模式,是概念定义,处理实际问题中,这个往往是最重要的环节。一个问题内容定位出问题了,后面的事情处理起来就比较麻烦。对于最后一项内容,比方说转发类型,转发的流程逻辑是其核心算法。图像处理、AI、数值计算等领域又是另外一套算法内容,当然这种算法可能是一个公式描述,也可能就是一套逻辑处理理论。数据结构与算法课程专注于数据元素个体之间的存储链接关系,以及特定数据结构上面元素算法。按照编程思维来讲,对象的封装和对象之间的关系解决的是内容描述的问题,对象的定义问题。对于C语言,void*指针完成不同类型的数据管理。对于高级语言,泛型编程技术路线是最佳选择。
1、数据基本的数据结构列表
CC++Java线性结构1. 数组、单链表和双链表
2. Linux内核中双向链表的经典实现
数组、单链表和双链表 数组、单链表和双链表 栈 栈 栈队列
消息队列实现
队列 队列树形结构 二叉查找树 二叉查找树 二叉查找树 AVL树 AVL树 AVL树 伸展树 伸展树 伸展树1. 红黑树(一)之 原理和算法详细介绍
2. 红黑树(二)之 C语言的实现
3. 红黑树(三)之 Linux内核中红黑树的经典实现
4. 红黑树(六)之 参考资料
1. 红黑树(一)之 原理和算法详细介绍
2. 红黑树(四)之 C++的实现
3. 红黑树(六)之 参考资料
1. 红黑树(一)之 原理和算法详细介绍
2. 红黑树(五)之 Java的实现
3. 红黑树(六)之 参考资料
哈夫曼树哈夫曼树 哈夫曼树...堆 二叉堆 二叉堆 二叉堆 左倾堆 左倾堆 左倾堆 斜堆 斜堆 斜堆 二项堆 二项堆 二项堆 斐波那契堆 斐波那契堆 斐波那契堆...图图的理论基础图的理论基础图的理论基础1. 邻接矩阵无向图
2. 邻接表无向图
3. 邻接矩阵有向图
4. 邻接表有向图
1. 邻接矩阵无向图
2. 邻接表无向图
3. 邻接矩阵有向图
4. 邻接表有向图
1. 邻接矩阵无向图
2. 邻接表无向图
3. 邻接矩阵有向图
4. 邻接表有向图
深度优先搜索和广度优先搜索深度优先搜索和广度优先搜索深度优先搜索和广度优先搜索拓扑排序拓扑排序拓扑排序Kruskal算法Kruskal算法Kruskal算法Prim算法Prim算法Prim算法Dijkstra算法...排序算法 冒泡排序 冒泡排序 冒泡排序 快速排序 快速排序 快速排序 直接插入排序 直接插入排序 直接插入排序 希尔排序 希尔排序 希尔排序 选择排序 选择排序 选择排序 堆排序 堆排序 堆排序 归并排序 归并排序 归并排序 桶排序 桶排序 桶排序 基数排序 基数排序 基数排序2、高级语言
高级语言是面向对象语言,OOP(Object-Oriented programming)企图将datas和methods联系在一起,对数据进行合理的封装。但是GP(Generic Programming)企图将datas和methods分开,这样数据存储和数据的基本算法操作就可以合理的分开,算法和结构的分离使得算法具有更好的通用性,减少不必要的代码,算法和数据描述是完全分离开来了。
C++STL库中sort算法对迭代器有要求,要求随机迭代器,list列表迭代器没有办法使用sort直接使用。但是list这种列表有自己的排序算法,当然必然首先用自己容器带的算法。
所有的算法,期内最终涉及元素本省的操作,无非就是比大小。
数据结构与算法代码下载地址
其中包含的最基本的单元测试。