基础算法
东东oyey
这个作者很懒,什么都没留下…
展开
-
Python实现经典排序算法--希尔排序
一、希尔排序简介希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整...原创 2020-04-24 00:52:26 · 950 阅读 · 0 评论 -
Python实现经典排序算法 --冒泡排序
看多许多人写的Python冒泡算法,实在不够简洁,复杂度为O(n^2)的算法已经对计算机不够友好,代码那么长,对程序员也不那么友好!这里我来总结一下经典排序算法冒泡排序的基本原理以及源代码。 冒泡算法它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。对于一个序...原创 2018-07-11 13:53:22 · 3312 阅读 · 0 评论 -
Python实现经典排序算法--插入排序
上一次讲到了冒泡排序算法在Python中的实现,现在来讲一下另一个经典算法,插入排序。有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)...原创 2018-07-12 17:46:51 · 764 阅读 · 1 评论 -
Python实现经典排序算法--选择排序
上一节降到插入排序算法,这次来讲一讲选择排序算法。选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。时间复杂度为O(n^2),当n较小时同插入算法一样,运算速度优于冒泡排序,但是对比于插入排序,其为一种不稳定的排序算法。以下是用Python实现经典插入排序的co...原创 2018-07-13 17:30:05 · 1087 阅读 · 1 评论 -
Python实现经典排序算法--堆排序
上次说到了经典算法选择排序,感觉是比较简单的算法,这一次说一说稍微有点难度的堆排序。堆排序的时间复杂度要明显优于前面的冒泡排序,插入排序和选择排序(局限于n较大时)。1、堆(二叉堆)先来讲讲堆(二叉堆),是一个数组,它可以近似被看作是一个完全二叉树。树上每一个节点对应一个元素,除了最底层外,该树是完全充满的,而且是从左至右填充的,所有最底层的元素会从左向右填充。表示堆的数组list包括两个属性,l...原创 2018-07-14 13:37:06 · 2460 阅读 · 0 评论 -
Python实现经典排序算法--快速排序
网络上用python实现快速排序有四种实现方式,有用匿名函数lambda表达式和双重循环实现的,也有用栈实现非递归的排序,这里我只讲一讲利用算法导论里面的分治思想,迭代来实现序列的快速排序。分治策略是对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原...原创 2018-07-15 17:01:06 · 21245 阅读 · 5 评论