python实现各种排序算法
lerry13579
这个作者很懒,什么都没留下…
展开
-
排序算法之python基数排序
基数排序介绍: 排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,前一个键排序的结果可以为后一个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位排序后元素的顺序在高位也相同时是不会改变的。基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基...原创 2018-08-26 16:51:12 · 602 阅读 · 0 评论 -
排序算法之python冒泡排序
冒泡排序介绍: 冒泡排序是一种交换排序思想: 比较相邻的连个关键字,把大的往后放,小的就向前移动,即冒泡代码:def BubbleSort(input_list): #如果待排序列为空,则直接返回空列表 if len(input_list) == 0: return [] sorted_list = input_list for i in...原创 2018-08-23 15:58:21 · 739 阅读 · 0 评论 -
排序算法之python直接插入排序
直接插入排序介绍: 直接插入排序是一种最简单的插入排序。有降序和升序两种。思想:序列分为两个部分,前半部分是有序序列,后半部分是无序序列,每次从无序序列里取一个放在有序序列的合适位置。直到无序序列为空。 代码:def InsertSort(input_list): if len(input_list) == 0: return [] sorted_list...原创 2018-08-23 16:48:35 · 1090 阅读 · 0 评论 -
排序算法之python希尔排序
希尔排序介绍: 希尔(shell)排序是一种插入排序,同时也叫缩小增量排序,算是直接插入排序的一个优化算法,以其设计者希尔(Donald Shell)的名字命名,该算法由 1959 年公布。思想:将待排序列以一定的步长分成子序列,把子序列进行排序,然后会继续以更小的步长进行分子序列,并将子序列排序,最终算法以步长为 1 进行排序。当步长为 1 时,算法变为直接插入排序,这就保...原创 2018-08-23 21:09:04 · 286 阅读 · 0 评论 -
排序算法之python快速排序
快速排序介绍: 快速排序是由东尼·霍尔所在1962年提出的一种排序算法,是一种交换排序。思想:从待排序列中挑出一个元素,作为"基准"(pivot),通过一趟排序,把所有比基准值小的元素放在基准前面,所有比基准值大的元素放在基准的后面(相同的数可以到任一边),这个称为分区(partition)操作。对前后两个区间重复此操作,直到前后分区的带下是0或1结束。每一次都确定待排序列中...原创 2018-08-25 15:22:27 · 621 阅读 · 0 评论 -
排序算法之python简单选择排序
简单选择排序介绍: 简单选择排序是一种选择排序。每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止思想:选择排序思想很简单,就是每次从待排序列中找出关键字最小的元素,放入已经排好的序列中,本质上就是第一次在后面选出最小的元素就是最终序列的第一小元素,第二次在后面选出的最小元素就是最终序列的第二小元素,如此重复,直到待排序列为空。其实这...原创 2018-08-25 16:05:20 · 1750 阅读 · 1 评论 -
排序算法之python堆排序
堆排序介绍: 堆排序也是一种选择排序。个人觉得是简单选择排序的优化,借助于二叉树这种数据结构,每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。跟简单选择排序不同的是堆排序的待排序列是利用二叉树这种数据结构存储的。相比之下是更优化的。思想:首先,要介绍一下堆。堆是一课顺序存储的完全二叉树。有大根堆和小根堆。若每个结点的的key不小于...原创 2018-08-25 20:02:45 · 9827 阅读 · 1 评论 -
排序算法之python归并排序
归并排序介绍: 归并排序是创建在归并操作上的一种有效的排序算法,1945年由冯·诺伊曼首次提出。思想:归并排序的实现分为递归实现与非递归(迭代)实现。递归实现的归并排序是算法设计中分治策略的典型应用,我们将一个大问题分割成小问题分别解决,然后用所有小问题的答案来解决整个大问题。非递归(迭代)实现的归并排序首先进行是两两归并,然后四四归并,然后是八八归并,一直下去直到归并了整个...原创 2018-08-25 20:45:39 · 572 阅读 · 0 评论