![](https://img-blog.csdnimg.cn/2020051711391672.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python实现
文章平均质量分 72
秉承开源开放思想,使用python实现排序算法、数据结构、机器学习算法,以及编码的小技巧,不求甚解,每有会意,欣然分享。。。。
南风以南
Python开发工程师,石油开发系研究生,公众号:不灵兔
展开
-
python实现·数据结构与算法之双向循环链表
双向循环链表定义双向循环链表(Double Cycle Linked List)是双向链表的一种更复杂的变形,头结点的上一节点链接域指向尾结点,而尾结点的下一节点链接域指向头节点。节点示意图表元素域elem用来存放具体的数据。链接域prev用来存放上一个节点的位置(python中的标识)链接域next用来存放下一个节点的位置(python中的标识)双向循环链表示意图双向循环链表的基本操作is_empty() 判断链表是否为空length 链表长度travel() 遍历整个链原创 2020-06-30 17:14:25 · 508 阅读 · 0 评论 -
python实现·数据结构与算法之双向链表
双向链表定义双向链表(Double Linked List)是一种更复杂的链表,每个节点除了包含元素域,还包含两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;另一个指向下一个节点,当此节点为最后一个节点时,指向空值。节点示意图表元素域elem用来存放具体的数据。链接域prev用来存放上一个节点的位置(python中的标识)链接域next用来存放下一个节点的位置(python中的标识)双向链表示意图双向链表的基本操作is_empty() 判断链表是否为空leng原创 2020-06-29 08:38:44 · 246 阅读 · 0 评论 -
python实现·数据结构与算法之单向循环链表
单向循环链表定义单向循环链表(Single Cycle Linked List)是单链表的一个变形,将链表中最后一个节点的next域不再为None,而是指向链表的头节点。节点示意图单向循环链表示意图单向循环链表的基本操作is_empty() 判断链表是否为空length 链表长度travel() 遍历整个链表,打印元素add(item) 在链表头部添加元素append(item) 在链表尾部添加元素insert(pos, item) 在指定位置插入元素remove(item)原创 2020-06-28 08:37:57 · 306 阅读 · 0 评论 -
python实现·数据结构与算法之单向链表
单向链表定义单向链表(Single Linked List)也叫单链表,是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素,是链表中最简单的一种形式。链表中的数据是以结点来表示的,每个节点包含两个域,一个元素域(数据元素的映象)和一个链接域,链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。节点示意图单向链表示意图单向链表的基本操作is_empty() 判断链表是否为空length 链表长度travel() 遍历整个链表,打印元素add(ite原创 2020-06-27 20:04:13 · 197 阅读 · 0 评论 -
python实现·十大排序算法之桶排序(Bucket Sort)
简介桶排序(Bucket Sort),也叫箱排序,其主要思想是:将待排序集合中处于同一个值域的元素存入同一个桶中,也就是根据元素值特性将集合拆分为多个区域,则拆分后形成的多个桶,从值域上看是处于有序状态的。对每个桶中元素进行排序,则所有桶中元素构成的集合是已排序的。桶排序是计数排序的扩展版本,计数排序可以看成每个桶只存储相同元素,而桶排序每个桶存储一定范围的元素。桶排序需要尽量保证元素分散均匀,否则当所有数据集中在同一个桶中时,桶排序失效。算法实现步骤根据待排序集合中最大元素和最小元素的差值范原创 2020-05-26 08:32:08 · 793 阅读 · 0 评论 -
python实现·十大排序算法之基数排序(Radix Sort)
简介基数排序(Radix Sort)是一种非比较型整数排序算法,是桶排序的扩展。基本思想是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。按照低位先排序,分别放入10个队列中,然后采用先进先出的原则进行收集;再按照高位排序,然后再收集;依次类推,直到最高位,最终得到排好序的数列。对于数值偏小的一组序列,其速度是非常快的,时间复杂度达到了线性,而且思想也非常的巧妙。算法实现步骤取得数组中的最大数,并取得位数;对数位较短的数前面补零;分配,先从个位开始,根据位值(0-9)分别放到0原创 2020-05-25 07:27:24 · 775 阅读 · 0 评论 -
python实现·十大排序算法之计数排序(Counting Sort)
简介计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。它的基本思想是:给定的输入序列中的每一个元素x,确定该序列中值小于等于x元素的个数,然后将x直接存放到最终的排序序列的正确位置上。算法实现步骤根据待排序集合中最大元素和最小元素的差值范围,申请额外空间;遍历待排序集合,将每一个元素出现的次数记录到元素值对应的额外空间内;对额外空间内数据进行计原创 2020-05-24 07:36:38 · 704 阅读 · 0 评论 -
python实现·十大排序算法之堆排序(Heap Sort)
文章目录简介算法实现步骤Python 代码实现动画演示算法分析联系我们简介堆排序(Heap Sort)是利用堆这种数据结构而设计的一种排序算法,是一种选择排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。堆排序思路为: 将一个无序序列调整为一个堆,就能找出序列中的最大值(或最小值),然后将找出的这个元素与末尾元素交换,这样有序序列元素就增加一个,无序序列元素就减少一个,对新的无序序列重复操作,从而原创 2020-05-23 08:35:22 · 282 阅读 · 0 评论 -
python实现·十大排序算法之希尔排序(Shell Sort)
文章目录简介算法实现步骤Python 代码实现动画演示算法分析联系我们简介希尔排序(Shell Sort)属于插入排序的一种,也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。其基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下,效率是很高的,因此希尔排序在时间效率比直接插入排序有较大提高。原创 2020-05-22 07:15:56 · 296 阅读 · 0 评论 -
python实现·十大排序算法之归并排序(Merge Sort)
文章目录简介算法实现步骤Python 代码实现动画演示算法分析联系我们简介归并排序(Merge Sort)是一种非常高效的排序方式,它用了分治的思想,基本排序思想是:先将整个序列两两分开,然后每组中的两个元素排好序。接着就是组与组和合并,只需将两组所有的元素遍历一遍,即可按顺序合并。以此类推,最终所有组合并为一组时,整个数列完成排序。算法实现步骤把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用递归的进行排序;将两个排序好的子序列的元素拿出来,按照顺序合并成一个最终的原创 2020-05-21 08:12:19 · 796 阅读 · 0 评论 -
python实现·十大排序算法之插入排序(Insertion Sort)
文章目录简介算法实现步骤Python 代码实现动画演示算法分析联系我们简介插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法实现步骤从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步原创 2020-05-19 07:34:57 · 758 阅读 · 0 评论 -
python 实现·十大排序算法之选择排序(Selection Sort)
文章目录简介算法实现步骤Python 代码实现动画演示算法分析联系我们简介选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完成。算法实现步骤初始状态:无序区为R[1,⋯ ,n]R\left[ 1,\cdots ,n \right]R[1,⋯,n],有序区为空;第i趟排序(i=1,2,3,⋯ ,原创 2020-05-18 07:44:24 · 333 阅读 · 0 评论 -
python实现·十大排序算法之冒泡排序(Bubble Sort)
文章目录简介算法实现步骤Python 代码实现动画演示算法分析联系我们简介冒泡排序(Bubble Sort)是经典排序算法之一,属于交换排序的一种,基本的排序思路是:从头开始两两元素进行比较,大的元素就往上冒,这样遍历一轮后,最大的元素就会直接筛选出来。然后再重复上述操作,即可完成第二大元素的冒泡。以此类推,直到所有的元素排序完成。算法实现步骤比较相邻的元素,如果第一个比第二个大,就交换它们两个(确定排序规则:从小到大或从大到小);对每一对相邻元素做同样的工作,从开始第一对到结尾的最后原创 2020-05-17 11:37:16 · 1602 阅读 · 4 评论