八大排序算法的 Python 实现

来源:互联网 发布:php 数字转二进制 编辑:程序博客网 时间:2024/06/05 14:18

简介

  • 本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。
  • 常用的排序算法包含两大类,一类是基础比较模型的,也就是排序的过程,是建立在两个数进行对比得出大小的基础上,这样的排序算法又可以分为两类:一类是基于数组的,一类是基于树的;基础数组的比较排序算法主要有:冒泡法,插入法,选择法,归并法,快速排序法;基础树的比较排序算法主要有:堆排序和二叉树排序;基于非比较模型的排序,主要有桶排序和位图排序。

特点

下面给出一些总结,根据自己的需要选择吧
仅供参考

冒泡法:对比模型,原数组上排序,稳定,慢
插入法:对比模型,原数组上排序,稳定,慢
选择法:对比模型,原数组上排序,稳定,慢
归并法:对比模型,非原数组上排序,稳定,快
快速法:对比模型,原数组上排序,不稳定,快
堆排序:对比模型,原数组上排序,不稳定,快
二叉树排序:对比模型,非数组上排序,不稳定,快
桶排序:非对比模型,非原数组上排序,不稳定,快
位图排序:非对比模型,非原数组上排序,不稳定,快

算法实现

1.冒泡排序

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
def bubble_sort(lists):     # 冒泡排序    count = len(lists)    for i in range(0, count):        for j in range(i + 1, count):            if lists[i] > lists[j]:                lists[i], lists[j] = lists[j], lists[i]    return lists

2.插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
def insert_sort(lists):     # 插入排序    count = len(lists)    for i in range(1, count):        key = lists[i]        j = i - 1        while j >= 0:            if lists[j] > key:                lists[j + 1] = lists[j]                lists[j] = key            j -= 1    return lists

更新中…………

原创粉丝点击