不白嫖,转载下文章!
我有个B站的粉丝群,现在80多人,平时会沟通交流,主要是问一些学习技巧,学习方向,我会给出一些指导。在问的问题当中,有个问题非常典型,就是很多人会问:
学习了C基础语法,但是就是不知道咋用,不会做项目?
我相信很多人都有这个困惑的,因为问题的解决思路是:
我们开课的时候,没有学全,还有一些课程需要掌握,而这块主要是,数据结构与算法。
数据结构的意义在于,描述一个物体,比如你要做一个超级玛丽游戏,这个玛丽都有哪些属性?
人物,状态,是否能发子弹,衣服,跳跃还是平行。然后就是依据这个属性,触发的一系列动作,就是算法。
很多人把算法理解的狭隘了。算法是什么?围绕数据结构,通过处理完成期待的输出,就是算法。没有太高深,很朴素的逻辑。
在这里我在分享一个世界观吧:
静态+动态,形成世界。
代码+运行,形成计算机世界。
数据结构(静态)+算法(动态)=程序。
这样子来理解,会让你很容易建立起来,它们的分工,是多么明确。今天分享一些资料,大家按需来看:
书籍分享:
1漫画算法
《漫画算法:小灰的算法之旅》通过虚拟的主人公小灰的心路历程,用漫画的形式讲述了算法和数据结构的基础知识、复杂多变的算法面试题目及算法的实际应用场景。
第1章介绍了算法和数据结构的相关概念,告诉大家算法是什么,数据结构又是什么,它们有哪些用途,如何分析时间复杂度,如何分析空间复杂度。
第2章介绍了最基本的数据结构,包括数组、链表、栈、队列、哈希表的概念和读写操作。
第3章介绍了树和二叉树的概念、二叉树的各种遍历方式、二叉树的特殊形式——二叉堆和优先队列的应用。
第4章介绍了几种典型的排序算法,包括冒泡排序、快速排序、堆排序、计数排序、桶排序。
第5章介绍了10余道职场上流行的算法面试题及详细的解题思路。例如怎样判断链表有环,怎样计算大整数相加等。
第6章介绍了算法在职场上的一些应用,例如使用LRU算法来淘汰冷数据,使用Bitmap算法来统计用户特征等。
2算法小抄
《labuladong的算法小抄》专攻算法刷题,训练算法思维,应对算法笔试。注重用套路和框架思维解决问题,以不变应万变。
第1章列举了几个最常见的算法类型及对应的解题框架思路,包括动态规划、回溯、广度优先搜索及双指针、滑动窗口等算法技巧。
第2章用动态规划的通用思路框架解决了十几道经典的动态规划问题,例如,正则表达式、背包问题,同时还介绍了如何写状态转移方程、如何进行状态压缩等技巧。
第3章介绍了数据结构相关的算法,例如,二叉树相关题目的解法,也包括LRU、LFU这种面试常考的算法原理。
第4章介绍了回溯算法、广度优先搜索算法等核心套路在算法题中的运用,巩固对算法框架的理解。
第5章讲解了一些高频题目,每道题目可能会结合多种算法思路进行讲解,也可能有多种解法,读完这一章,你就可以独自遨游题海啦!
3算法图解
本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础,带你学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。
4算法导论
这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了多个练习题和思考题以及叙述较为详细的实例研究。
5编程之美
这本书收集了约60道算法和程序设计题目,这些题目大部分在近年的笔试、面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。本书的内容分为下面几个部分:
(1)游戏之乐:从游戏和其他有趣问题出发,化繁为简,分析总结。
(2)数字之魅:编程的过程实际上就是和数字及字符打交道的过程。这一部分收集了一些好玩的对数字进行处理的题目。
(3)结构之法:汇集了常见的对字符串、链表、队列,以及树等进行操作的题目。
(4)数学之趣:列举了一些不需要写具体程序的数学问题,锻炼读者的抽象思维能力。
6操作系统
本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux、WindowsVista和Symbian操作系统的详细介绍。书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。此外,还在第2版的基础上对部分习题进行了增删,更有助于读者学习和对知识的理解及掌握。
本书适合作为高等院校计算机专业操作系统课程教材,也是设计、开发操作系统的重要参考书。
Tanenbaum教授作为三个操作系统的设计师或联合设计师,具有长期设计开发操作系统的经验,从而把其对理论的深入理解和具体实践融入书中,使本书成为操作系统领域的经典之作。
在本书第3版中,作者深入讨论了许多主题,包括:进程、线程、存储管理、文件系统、I/O、死锁、接口设计、多媒体、性能权衡,以及有关操作系统设计的最新趋势。书中不仅涵盖了现代操作系统的原理和实践,而且特别