
算法
小泽十一章
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用python创建堆以及实现堆排序
堆是计算机科学中一类特殊的数据结构的总称,堆通常可以被看做是一颗完全二叉树的数组对象。 堆的特性 它是完全二叉树,除了树的最后一层结点不需要是满的,其他的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求坐满右不满。 他通常用数组来实现。具体方法就是讲二叉树的结点按照层级顺序放入数组中,根结点的在位置1,他的子结点在位置2和3,而子结点的子结点分别在位置4,5,6和7,以此类推。如果一个结点的位置为k,则它的父结点的位置为k/2,而他的两个子结点的位置分别为2k和2k+1。这样,在不使用指针的情况原创 2020-09-22 21:54:20 · 1488 阅读 · 1 评论 -
python实现快速排序
快速排序是对冒泡排序的一种改进,他的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,一次达到整个数据的有序序列。 ## 快速排序 def quick(lst): """ 原理: 1、首先设定一个分界值,通过分界值将数组分成两部分。 2、将大于或等于分界值的数据放到数组右边,小于分界值的数据放到数据的左边,此时左边部分元素都小于或原创 2020-09-20 02:08:16 · 203 阅读 · 0 评论 -
python实现归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用,将已有序的子序列合并,得到完全有序的序列,即先使每个序列有序,再使子序列段间有序,将两个有序表合成一个有序表,成为二路归并。 ## 归并排序 def merge(lst): """ 原理: 1、尽可能的将一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。 2、将相邻的两个字组进行合并成一个有序的大组。 3、不原创 2020-09-19 21:28:11 · 243 阅读 · 0 评论 -
python实现希尔排序
希尔排序是插入排序的升级版 import time import random from insert import insert ## 希尔排序 def shell(lst): """ 插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。 选定一个增量h,按照增长量作为数据分组的依据,对数据进行分组,对分好组的每一组数据完成插入排序,减小增长量,最小 减为1,重复操作 :param lst: :return: """原创 2020-09-18 17:29:09 · 180 阅读 · 0 评论 -
python实现冒泡排序
冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作同样的工...原创 2019-09-17 19:59:09 · 293 阅读 · 0 评论 -
python实现插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描, 找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复 把已排序元素逐步向后挪位,为最新元素提供插入空间。 python实现插入排序很简单,代码如下: def insertion(lst): """从第二个元素开始向前插入...原创 2019-09-17 20:49:55 · 251 阅读 · 0 评论 -
python实现选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最...原创 2019-09-24 21:49:54 · 353 阅读 · 0 评论