新手如何入门Python算法快进来学!
新手如何入门Python算法?
学会了Python基础知识, 想进阶一下, 那就来点算法吧!毕竟
编程语言只是工具,结构算法才是灵魂。
新手如何入门Python算法?
几位印度小哥在Git Hub上建了一个各种Python算法的门大全
。从原理到代码,全都给你交代清楚了。为了让新手更加直观
的理解,有的部分还配了动图。
https://github.com/TheAlgorithms/Python
这个项目主要包括两部分内容:一是各种算法的基本原理讲解
,二是各种算法的代码实现。
算法的代码实现
算法的代码实现给的资料也比较丰富,除了算法基础原理部分
的Python代码, 还有包括神经网络、机器学习、数学等等代码
实现。
例如在神经网络部分,给出了BP神经网络、卷积神经网络、全
卷积神经网络以及感知机等。
代码以Python文件格式保存在Git Hub上, 需要的同学可以自
行保存下载。
https://github.com/TheAlgorithms/Python
新手如何入门Python算法?
算法原理
在算法原理部分主要介绍了排序算法、搜索算法、插值算法、
跳跃搜索算法、快速选择算法、禁忌搜索算法、加密算法等。
当然,除了文字解释之外,还给出了帮助更好理解算法的相应
资源链接,包括维基百科、动画交互网站链接。
例如,在一些算法部分中,其给出的动画交互链接,非常完美
帮助理解算法的运行机制。
交互动画地址:
https//www.toptal.com/developers/sortingalgorithms/bub
ble-sort
排序算法
冒泡排序
新手如何入门Python算法?
冒泡排序,有时也被称做沉降排序,是一种比较简单的排序算
法。这种算法的实现是通过遍历要排序的列表,把相邻两个不
符合排列规则的数据项交换位置,然后重复遍历列表,直到不
再出现需要交换的数据项。当没有数据项需要交换时,则表明
该列表已排序。
桶排序算法
桶排序(Bucket sort) 或所谓的箱排序, 是一个排序算法, 工作
的原理是将数组分到有限数量的桶子里。每个桶子再个别排序
,有可能再使用别的排序算法或是以递归方式继续使用桶排序
进行排序。
鸡尾酒排序
鸡尾酒排序,也就是定向冒泡排序,鸡尾酒搅拌排序,搅拌排
序(也可以视作选择排序的一种变形),涟漪排序,来回排序
或快乐小时排序,都是冒泡排序的一种变形。此算法与冒泡排
序的不同处在于排序时是以双向在序列中进行排序。
新手如何入门Python算法?
插入排序
插入排序(Insertion Sort) 是一种简单直观的排序算法。它的
工作原理是通过构建有序序列,对于未排序数据,在已排序序
列中从后向前扫描,找到相应位置并插入。插入排序在实现上
, 通常采用in-place排序的额外空间的排序, 因而在从后向前排
描过程中,需要反复把已排序元素逐步向后挪位,为最新元素
提供插入空间。
归并排序
归并排序(Mergesort, 或mergesort) , 是创建在归并操作_
的一种有效的排序算法, 效率为O(n logn) (大O符号) 。1945
年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide
and Conquer) 的一个非常典型的应用, 且各层分治递归可以
同时进行。
堆(Heap)
堆(Heap) 是一种基于比较的排序算法。它可以被认为是一种
改进的选择排序。它将其输入划分为已排序和未排序的区域,
新手如何入门Python算法?
并通过提取最大元素,将其移动到已排序区域来迭代缩小未排序
区域。
基数排序
基数排序(Radix sort) 是一种非比较型整数排序算法, 其原理
是将整数按位数切割成不同的数字,然后按每个位数分别比较
。由于整数也可以表达字符串(比如名字或日期)和特定格式
的浮点数,所以基数排序也不是只能使用于整数。
选择排序
选择排序(Selection sort) 是一种简单直观的排序算法。它的
工作原理如下。首先在未排序序列中找到最小(大)元素,存
放到排序序列的起始位置,然后,再从剩余未排序元素中继续
寻找最小(大)元素,然后放到已排序序列的末尾。以此类推
,直到所有元素均排序完毕。
Shell排序
Shell Sort是插入排序的一种推广, 允许交换相距很远的项。思
路是安排元素列表,以便从任何地方开始,考虑到每个第n个元
素都会给出一个排序列表。这样的列表叫做h排序。等效地,可
以被认为是h交错列表,每个元素都是单独排序的。