Python学算法入门大全

01

Github标星近4万

这个repo有近23个大牛一起维护的,领头的是一个印度工程师!印度我好几年前出差还是去过,当时去的是号称是印度的“硅谷”班加罗尔,确实软件行业非常发达。来看一下这个Github上囊括了几大主流的编程语言:

有Python,Java,C,C++,Scala和C#,发现Python打头阵,非常欣慰。Python已经作为四大主流语言地位越来越稳了。因为我主要研究Python,赶紧点进去看一下Python的相关算法:

哇发现有近38000多颗星,要知道Python里面的最火的flask也才4.4w。一个算法的实现库能这么多星,真是牛逼啊!

02

主要覆盖的算法

这么火的repo到底有啥好东西,引来这么多人围观点赞呢。介绍了很多常见的排序,而且很多用动画的形式表现,代码也写的非常通熟易懂,非常适合入门新手,下面我挑几种大家看一下:

排序算法-冒泡排序:

冒泡排序,有时也称为下沉排序,是一种简单的排序算法,它反复遍历要排序的列表,比较每对相邻的项目,如果它们的顺序错误则交换它们。重复传递列表,直到不需要交换,这表明列表已排序

来看一下它的code:

代码还是写的非常工整而且很严谨,一共才20来行,而且作者非常贴心的考虑到了Python2和Python3两种版本的支持,也加了很多注释,看的出编程的习惯非常好。

堆排序

是一种基于比较的排序算法。它可以被认为是一种改进的选择排序。它将其输入划分为已排序和未排序的区域,并通过提取最大元素并将其移动到已排序区域来迭代缩小未排序区域。

看一下堆排序的代码,写的还是很巧妙的,其实就是构造一个完全二叉树的,即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字,堆分为大顶堆和小顶堆。

上面只是挑选了2个比较典型的算法实现,还有很多经典的排序算法,比如桶排序,鸡尾酒排序,插入排序,归并排序,选择排序;以及搜索算法,比如线性搜索

线性搜索或顺序搜索是用于在列表中查找目标值的方法。它按顺序检查列表中的每个元素的目标值,直到找到匹配或直到搜索完所有元素。线性搜索在最差的线性时间运行并且最多进行n次比较,其中n是列表的长度。

其实就是在Python里面一个遍列列表而已:

快速选择排序:

快速选择是一种选择算法,用于查找无序列表中的第k个最小元素。它与快速排序算法有关。像quicksort一样,它是由Tony Hoare开发的,因此也被称为Hoare的选择算法。[1] 像quicksort一样,它在实践中很有效并且具有良好的平均情况性能,但是具有差的最坏情况性能。Quickselect及其变体是最常用于高效实际实现的选择算法。

还有有趣的RSA加密算法:

除了上面的各种算法之外,还有很多机器学习和人工智能的代码,比如神经网络的代码实现:

总之,这个repo还是不错,有兴趣的小伙伴,可以点击阅读原文去看一下,吸取里面的精华,也许这个repo很快会突破4w颗星!

本文分享自微信公众号 - SAMshare(gh_8528ce7b7e80)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SmartSi

Flink1.4 定义keys的几种方法

一些转换(例如,join,coGroup,keyBy,groupBy)要求在一组元素上定义一个key。其他转换(Reduce,GroupReduce,Aggre...

6320
来自专栏后端技术漫谈

Java后端开发知识点快速复习手册全导航

我是蛮三刀把刀,目前为后台开发工程师。主要关注后台开发,网络安全,Python爬虫等技术。

12140
来自专栏SmartSi

Scala 学习笔记之数组

对于那种长度按需要变化的数组,Java有 ArrayList.Scala中等效数据结构为 ArrayBuffer.

12540
来自专栏SmartSi

Python Numpy 数组

NumPy(Numeric Python,以numpy导入)是一系列高效的、可并行的、执行高性能数值运算的函数的接口。numpy模块提供了一种新的Python数...

23030
来自专栏公众号PowerBI大师

关于数据分析工具的终极问题

昨晚在CPDA微课堂做了场直播,聊了一个终极问题,也是很多人在关注的话题。我把内容整理下来供读者们阅读、质疑和思考。(全文长6000多字)

19140
来自专栏SmartSi

Python 数据库操作

Python使用数据库驱动模块与MySQL通信。诸如pymysql等许多数据库驱动都是免费的。这里我们将使用pymysql,它是Anaconda的一部分。驱动程...

12430
来自专栏SmartSi

Python 字符串操作

字符串是 Python 中最常用的数据类型。我们可以使用引号(‘或”)来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如:

13710
来自专栏HACK学习

Seeker:一款可获取高精度地理和设备信息的工具分析

Seeker是一款可以获取高精度地理和设备信息的工具。其利用HTML5,Javascript,JQuery和PHP来抓取设备信息,以及Geolocation接口...

8910
来自专栏SmartSi

Python 文件处理

记录中的字段通常由逗号分隔,但其他分隔符也是比较常见的,例如制表符(制表符分隔值,TSV)、冒号、分号和竖直条等。建议在自己创建的文件中坚持使用逗号作为分隔符,...

16030
来自专栏后端技术漫谈

搭建AWS云服务器深度学习环境——免环境配置/GPU支持/Keras/TensorFlow/OpenCV

该文章是以前做的云上深度学习环境搭建笔记,当时也花了不少心血,在面试助攻手册的整理发布过程中穿插着来一篇,放松一下。若对机器学习感兴趣的小伙伴,可以亲自上手体验...

18430

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励