hello-algo,一个免费的算法学习开源项目

简介: hello-algo,一个免费的算法学习开源项目

作为一名技术爱好者,看到好的开源项目总是忍不住想要推荐给身边的朋友。最近小编也一直想要重新写一些算法相关的内容,就看到了githubhello-algo项目。这个项目将算法学习的书籍搬到了线上进行开源。虽然相对于以前打ACM时用到的一些大佬的模板来说(例如邝斌的模板),算法体量小很多,但是这个项目讲解得更为详细,支持的语言也蛮多,对于算法体量来说只是一个补充的时间问题。感兴趣的朋友可以关注一下。

Hello-algo项目简介

正如这个项目的名字一样,这个项目在介绍的时候也提到了适用范围:

若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么这本书正是为您量身定制!如果您已经积累一定刷题量,熟悉大部分题型,那么本书可助您回顾与梳理算法知识体系,仓库源代码可以 被当作“刷题工具库”或“算法字典”来使用。

内容下载

该项目的链接为:https://github.com/krahets/hello-algo,可以直接fork一把,然后git clone下来,关于git的使用方法,可以看小编的这篇文章git配置密钥及提交代码到仓库

在线学习的网站链接为:https://www.hello-algo.com/

同时,项目提供了下载的pdf,地址为:https://github.com/krahets/hello-algo/releases

如果有朋友无法前往下载,也可以在本公众号回复消息【算法】关键字进行下载。

内容介绍

我们从书中的内容来看

一共包含15章的算法内容,分别是初识算法讲算法是什么,复杂度分析主要讲时间复杂度和空间复杂度,以及如何使用时间换空间或者空间换时间。这两种时间复杂度的相互转换需要根据当时场景中对应的痛点进行分析。数据结构这一篇里面包含的内容是数组、链表和列表,这些基本的数据结构是构成任何一种复杂的数据结构的基础,吃透这几个基础数据结构是很有必要的。栈和队列这一篇包含栈、队列和双向队列,在我们的计算机中,栈和队列使用得是非常多的,例如,理解栈和队列,也有助于拓宽我们的思维方式和逻辑。哈希表这一篇包含哈希排序、哈希冲突等内容,哈希表其实是一个伟大的发明,它可以有效减少空间,小编使用过一种名叫布隆过滤器的哈希算法,将几千万量级的存储空间压缩到一个几百位的空间中进行实现,但正如内容讲到的一样,哈希算法是存在位置冲突的,需要掌握它的优缺点。树、图、堆这些算法是数据结构算法的延伸算法,在工作中用得蛮多的。搜索算法主要讲的是二分查找算法,二分搜索主要是针对单调递增或者递减的方式的问题求解,对应二分搜索,还有三分搜索算法,求解的是极值问题,即具有最大值和最小值的单峰问题。排序部分讲了十几种排序算法,排序算法的学习过程可以先由高时间复杂度逐步转向到低时间复杂度的过程,注重理解计数排序和基数排序的区别。分治和回溯递归求解子问题,分治其实是一种思维方式,一个问题是由一个或多个子问题构成。动态规划目前只涉及背包问题,可能未来会更新。最后是贪心,贪心其实不是一种算法,只是一种思维方式。

总的来说,现目前的阶段,整个项目还是起步阶段,算法的内容缺失蛮多的,拿来做算法的入门还是不错的,想要更进一步的学习,还是需要看算法导论或者找一些ACM大佬总结的各类算法模板。

目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
Paper Digest | 突破个性化推荐数据稀疏性:长尾增强的图对比学习算法研究
本文提出了一种新的长尾增强的图对比学习方法(LAGCL),该方法促使模型同时兼顾头部节点与尾部节点之间的知识,并通过长尾增强技术来使模型产出更均匀更准确的节点表征,从而改进基于 GNN 的推荐任务。
|
2月前
|
算法 网络协议 Linux
【Cisco Packet Tracer】交换机的自学习算法
【Cisco Packet Tracer】交换机的自学习算法
53 0
|
3月前
|
算法 安全 数据安全/隐私保护
C/C++学习 -- RSA算法
C/C++学习 -- RSA算法
34 0
|
3月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
32 1
|
8天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
8天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
18 0
|
15天前
|
算法
【算法学习--字符串】(不含KMP算法)
【算法学习--字符串】(不含KMP算法)
|
1月前
|
Rust Dart 算法
55.3k star!开源算法教程,附带动画图解,学习算法不再苦恼!
55.3k star!开源算法教程,附带动画图解,学习算法不再苦恼!
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
|
1月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Canny边缘检测算法
Opencv(C++)学习系列---Canny边缘检测算法