【玩转算法】1、总结,算法思想,加油

总结,算法思想,加油


简单记录 - bobo老师的玩转算法系列–玩转算法 -结束语

学完了,加油 _ 一个开始 算法的世界

为什么要学习算法

我们每天都在接触算法。

算法是至关重要的。

学好算法,才能创造出更有意义的东西。

让我们一起体会算法之美

在这里插入图片描述

Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.A programmer
who subconsciously views himself ad an artist will enjoy what he does and will do it better.
-Donald Ervin Knuth

算法

一个开始 算法的世界 计算机这条路

交流 思想 实现 加油

学习要求

需要掌握最基础的语言知识

了解数组,链表,堆,栈等线性结构

对基本算法知识有常识性了解:如递归、遍历、算法复杂度

线性问题(排序)

树形问题

图论问题

白板编程

不给你编译器,给你一个白板,直接在上面写代码。

算法思想?

分治算法 - 归并排序,快速排序…

贪心算法 - 最小生成树…

动态规化 - 最短路径 …

递归搜索 - 树形结构…

堆:斐波那契堆?

树:线段树?

图:网络流?

语言实现

在这里插入图片描述

Java

数据结构的重要性

在这里插入图片描述

I will,in fact,claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important.Bad programmers worry about the code.Good programmers worry about data structures and their relationships.
-Linus Torvalds(creator of Linux)

课程总结

在这里插入图片描述

线性(排序) 树形结构 图形结构

算法与数据结构

线性问题(排序)

线性问题(排序)

O(n^2)

选择排序

插入排序

O(nlogn)

归并排序 求逆序数的个数

快速排序 - partition -> 随机化 -> 大量重复元素 k-selection

三路快排

O(nlogn)

堆排序 (Heap)

在这里插入图片描述

树形问题

树形问题

堆(Heap)

堆排序

优先队列

索引堆 Prim Dijkstra

二叉查找树(Binary Search Tree) 解决查找问题

二分查找法 动态维护:插入,删除,查找,遍历,顺序相关问题

并查集(Union Find)

基于rank的优化 -> 路径压缩 Kruskal 应用

在这里插入图片描述

图论问题

图的表示:邻接表和邻接矩阵

有向图和无向图

有权图和无权图

图的遍历:DFS, BFS 深度 广度

联通分量 Flood Fill 寻路 走迷宫 迷宫生成

无权图的最短路径 环的判断

最小生成树问题 (Minimum Spanning Tree)

Prim Kruskal

最短路径问题 (Shortest Path)

Dijkstra Bellman-Ford

在这里插入图片描述

更多算法问题

数据结构相关

双向队列 斐波那契堆 红黑树 区间树 KD树 ……

具体领域相关

数学:数论;计算几何 图论:网络流 ……

进一步学习

算法设计相关

分治 归并排序;快速排序;树结构

贪心 选择排序;堆;Kruskal;Prim;Dijkstra

递归回溯 树的遍历;图的遍历

动态规划 Prim;Dijkstra

算法

每个细分领域都是算法

算法

图形学

图像学

机器学习

人工智能

数据挖掘

操作系统

编译原理

网络安全

虚拟现实

高性能计算

算法 交流 思想 实现 加油

原文地址:https://www.cnblogs.com/liuawen/p/12310606.html