【转载】GitHub星数13200!用Python实现所有排序算法的开源项目你见过么?

GitHub星数13200!用Python实现所有排序算法的开源项目你见过么?

https://cloud.tencent.com/developer/news/325534

 

本月榜单有一个项目成功吸引了我的注意,该项目用Python实现了所有的排序算法,包括插入排序、冒泡排序、快速排序、选择排序、归并排序等。

截至今日,该项目已经获得了13200个「star」以及3758个「fork」(GitHub项目地址:https://github.com/TheAlgorithms/Python)

该创建者表示这些仅用于演示学习。由于性能的原因,Python标准库中有许多排序实现。

1、冒泡排序

 

冒泡排序,有时也称为下沉排序,是一种简单的排序算法,它反复遍历要排序的列表,一次比较两个元素,如果它们的顺序错误则交换它们。重复遍历列表,直到不再需要交换,说明该列表排序完成。

性能分析

● 冒泡排序在最坏的情况下的比较次数是O(N^2)

● 冒泡排序在最坏的情况下的比较次数是O(N)

代码实现

2、插入排序

 

插入排序是一种简单的排序算法,可以一次构建一个项目的最终排序数组(或列表)。它在大型列表上的效率远低于更高级的算法,如快速排序,对堆排序或归并排序。

代码实现

3、归并排序

 

归并排序(MERGE-SORT)是一种有效的、通用的,基于比较的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。由John von Neumann于1945年发明。

属性

● 最好时间复杂度O(nlogn)

● 最坏时间复杂度O(nlogn)

● 平均时间复杂度O(nlogn)

代码实现

归并排序在多种情况下都是首选的算法:当需要稳定性时,当排序链表时,当随机访问比顺序访问复杂得多时(例如,磁带上的外部排序)。

4、快速排序

 

快速排序(也被称为分区交换排序)是一种有效的排序算法,用作按顺序放置数组元素的系统方法。

代码实现

5、选择排序

 

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

代码实现

选择排序的特性是最小化交换的数量。在交换项成本很高的应用程序中,选择排序可能是一种很好的选择算法。

 

 

----------------

2018年9月份GitHub上最热门的Python项目

 

本文我们将和大家介绍 GitHub 上 9 月份最受欢迎的 11 个Python开源项目,在这些项目中,你有在用或用过哪些呢?
 

1.Python
https://github.com/TheAlgorithms/Python Star 14125

用Python实现的所有算法,不过创建者表示这些仅用于演示目的。Python标准库中有许多种类的实现,出于性能原因要好得多。

 

2.Algorithm_Interview_Notes-Chinese
https://github.com/imhuay/Algorithm_Interview_Notes-Chinese Star 7199

2018/2019/校招/春招/秋招/算法/机器学习(Machine Learning)/深度学习(Deep Learning)/自然语言处理(NLP)/C/C++/Python/面试笔记

 

3.awesome-algorithm
https://github.com/apachecn/awesome-algorithm Star 5395

Leetcode 题解 (跟随思路一步一步撸出代码) 及经典算法实现

 

4.system-design-primer
https://github.com/donnemartin/system-design-primer Star 50239

该项目是关于如何设计大型系统,以及如何应对系统设计面试。系统设计是一个很宽泛的话题。在互联网上,关于系统设计原则的资源也是多如牛毛。这个仓库就是这些资源的组织收集,它可以帮助你学习如何构建可扩展的系统。

 

5.ungoogled-chromium
https://github.com/Eloston/ungoogled-chromium Star 5966

ungoogled-chromium 是开源的 Chromium 衍生版,由它的名字不难看出,这个基于 Chromium 的浏览器项目移除了 Chromium 中和 Google 相关的内容。让浏览器在运行过程中不再和 Google 服务器交互。

 

6.models
https://github.com/tensorflow/models Star 42707

一个Tensorflow库,里面包含 使用TensorFlow 构建的模型和示例的教程,旨在更好的维护,测试,并与最新的TensorFlow API保持同步最新。

TensorFlow实现模型:https://github.com/tensorflow/models/blob/master/research

TensorFlow教程:https://github.com/tensorflow/models/blob/master/tutorials

 

7.awesome-python
https://github.com/vinta/awesome-python Star 56171

awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。十分受Python开发者的青睐。

 

8.youtube-dl
https://github.com/rg3/youtube-dl Star 42711

youtube-dl是一个用来从YouTube.com网站上下载视频文件的命令行工具。它采用Python开发,运行时需要Python的解释环境。支持多个OS平台,支持众多视频网站(见附图)国内优酷、土豆、新浪和搜狐,国外YouTube等赫然在列。

 

9.keras
https://github.com/keras-team/keras Star 34379

Keras是一个极简的、高度模块化的神经网络库,采用Python(Python 2.7-3.5.)开发,能够运行在TensorFlow和Theano任一平台,好项目旨在完成深度学习的快速开发。特性:

● 可以快速简单的设计出原型(通过总模块化、极简性、和可扩展性)

● 同时支持卷积网络和循环网络,以及两者的组合

● 支持任意的连接方案(包括多输入和多输出)

● 支持GPU和CPU

 

10.boltons
https://github.com/mahmoud/boltons Star 4363

Boltons是拥有超过220个BSD许可的、纯Python实用工具集合,Boltons有极简单的架构,保持一致与独立,着眼于尽可能广泛的维护用例和使用模式。

 

11.mlcourse.ai
https://github.com/Yorko/mlcourse.ai Star 2731

这是一套开放、免费的机器学习课程,课程为期10周,包含5大主题12个部分。
--------------------- 
作者:大禹编程 
来源:CSDN 
原文:https://blog.csdn.net/qq_42180849/article/details/83414772 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值