总结篇:排序算法

目录

1.  前言

2.  排序算法三问

3.  排序算法三傻

4.  不稳定排序算法

5.  稳定排序算法

6.  其他算法

7.  看图识算法


1.  前言

!FBI WARNING!

本文旨在于以通俗易懂地方式阐述主要排序算法及其特点

什么是排序算法

总结篇:排序算法_第1张图片

排序算法(Sorting Algorithm)指能将一定量数据依照特定排序方式进行排列的一种算法。上干货!

总结篇:排序算法_第2张图片

2.  排序算法三问

谈及排序算法,最关心的三个问题:速度够不够快?内存够不够用?结果够不够稳?

时间复杂度(Time Complexity):定性描述该算法的运行时间。

总结篇:排序算法_第3张图片

空间复杂度:定性地描述该算法所需要的存储空间大小。

 总结篇:排序算法_第4张图片

稳定性:原本有相等键值的纪录维持相对次序。

总结篇:排序算法_第5张图片总结篇:排序算法_第6张图片

3.  排序算法三傻

冒泡排序(Bubble Sort)又称为泡式排序,名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

一图解百惑,上图! 

 总结篇:排序算法_第7张图片

话不多说,上代码!冒泡排序(Python)

选择排序(Selection Sort)是一种简单直观的排序算法。原地操作几乎是选择排序的唯一优点,当空间复杂度要求较高时,可以考虑选择排序;实际适用的场合非常罕见。

一图解百惑,上图! 

总结篇:排序算法_第8张图片​ 

话不多说,上代码!选择排序(Python)

插入排序(Insertion Sort)通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

一图解百惑,上图! 

总结篇:排序算法_第9张图片 

话不多说,上代码!插入排序(Python)

为什么称这三种算法为“三傻”,主要原因速度慢,基本上仅作为教案分析。但是“三傻”又是排序算法的根基,稍加优化即可达到出乎意料的效果,例如二分法、分治法、递归等。

4.  不稳定排序算法

希尔排序(Shell Sort)也称递减增量排序算法,是插入排序的一种更高效的改进版本,但是是非稳定排序算法。

一图解百惑,上图! 

总结篇:排序算法_第10张图片

话不多说,上代码!希尔排序(Python)

快速排序(Quick Sort)又称分区交换排序(Partition-exchange Sort),是在冒泡排序基础上的递归分治法。虽然快速排序算法是不稳定的,但是可以通过牺牲性能和空间来维护稳定性。

一图解百惑,上图! 

总结篇:排序算法_第11张图片

话不多说,上代码!快速排序(Python)

堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构。

一图解百惑,上图! 

总结篇:排序算法_第12张图片

话不多说,上代码!堆排序(Python)

5.  稳定排序算法

归并排序(Merge Sort)是创建在归并操作上的一种有效的排序算法,是采用分治法的一个非常典型应用。

一图解百惑,上图!

 总结篇:排序算法_第13张图片

话不多说,上代码!归并排序(Python)

计数排序(Counting Sort)是一种稳定的线性时间排序算法。

一图解百惑,上图!

 

话不多说,上代码!计数排序(Python)

桶排序(Bucket Sort)是将数组分到有限数量的桶里。

一图解百惑,上图! 

话不多说,上代码!桶排序(Python)

基数排序(Radix Sort)是一种非比较型整数排序算法,是将整数按位数切割成不同的数字,然后按每个位数分别比较。

一图解百惑,上图! 

总结篇:排序算法_第14张图片

话不多说,上代码!基数排序(Python)

6.  其他算法

Timsort 是一种混合稳定的排序算法,源自合并排序和插入排序,旨在较好地处理真实世界中各种各样的数据。 从 2.3 版本起,Timsort 一直是 Python 的标准排序算法。

7.  看图识算法

最后,玩个小游戏,请看图识别是哪种排序算法~

总结篇:排序算法_第15张图片总结篇:排序算法_第16张图片总结篇:排序算法_第17张图片

          总结篇:排序算法_第18张图片          总结篇:排序算法_第19张图片总结篇:排序算法_第20张图片

 总结篇:排序算法_第21张图片                      总结篇:排序算法_第22张图片

        

你可能感兴趣的:(排序算法,算法,数据结构,python)