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
版权声明:本文为博主原创文章,转载请附上博文链接!