数据结构+算法=程序
总逻辑: 要解决某个问题—发明出某种算法—这种算法需要某种数据结构,所以发明出这种数据结构
要解决排序问题-想要用堆排序这种算法-堆排序算法需要堆这种数据结构来存储数据
数据的四层结构
数据结构的层次结构(四层): 数据类型-存储结构-基本逻辑结构-功能逻辑结构(用于具体实现功能)
1.基本数据类型(存什么):整型,浮点型,字符串…
2.存储结构(存在哪):连续内存条(连续存储), 不连续内存条(链接存储)
3.基本逻辑结构(怎么存):线性(数组,链表),树,图,哈希表
四种基本逻辑结构 具体表达就是: 创建结构体进行逻辑实现
4.功能逻辑结构(做什么):根据需要的功能来增强数据结构的功能
在数组链表基础上实现:栈,队列
二叉树用于查找(算法),就变成查找二叉树,再优化就变成平衡二叉搜索树(AVL)
在完全二叉树的基础上实现堆
声明:
数组已经在 连续内存条的存储结构 上加了一层 线性逻辑结构,逻辑结构是连续的索引,让其存储单元变为连续有序的
链表的逻辑结构是指针
数据结构基本操作:
遍历(核心基本操作),创建(即插入+遍历),插入,删除
二叉树:前中后序遍历
图: 深度优先广度优先遍历
算法
算法层次/学习方法
1.算法基本思想:看一遍动画演示,自己手动画图过一遍即可掌握
2.具体编程机制: 基本思想与具体编码实现的过渡
3.具体编码实现: 考验编程语言的能力,把思想转化为具体语言的代码,也是最难的一步
编程机制/具体编码例子(快排)
1.引入三个变量:pivot中心轴,left左下标,right右下标
2.left从左向右获取值,并与pivot比较:若left大于pivot,则该值放到整个序列右边,开始移动right下标
若left小于pivot,该值不动,继续移动left下标
3.当left下标=right下标时,将pivot放到该位置
4.递进下一子序列
(2.3写为函数QuickSort)
现今所选算法类型
四种基本排序算法(每种都有一个高级扩展)
四种基本搜索算法 (每种都有几个高级扩展)
各个数据结构的访问/遍历
图论相关的几个算法:最小生成树,最短路径算法…
最终形态是十种排序算法,十种搜索算法
-排序算法:
交换排序
插入排序
选择排序
归并排序
-查找算法: 四种基本查找算法及其扩展
顺序查找(分块查找)
二分查找(插值查找,斐波那契查找)
二叉搜索树查找(平衡查找树-红黑树-B树)
哈希查找
-最短路径算法: 即dijkstra算法(依托于广度优先遍历算法,所以依托于图这种数据结构)