排序算法
最后更新于:2022-04-02 04:11:07
[TOC]
## 概述
排序有
1. 插入类排序有:直接插入排序和希尔排序
2. 选择类排序有:直接选择排序和堆排序
3. 交换类排序有:冒泡排序和快速排序
![UTOOLS1588210883577.png](http://yanxuan.nosdn.127.net/620a141da7b3667b7a29410e30892851.png)
### 稳定性概念
**定义**:能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变。(A1=A2,排序前A1在A2前面,排序后A1还在A2前面)
**意义**:稳定性本质是维持具有相同属性的数据的插入顺序,如果后面需要使用该插入顺序排序,则稳定性排序可以避免这次排序。
### 排序详解
1. 冒泡排序可以说是最差的排序算法。
2. 冒泡排序,直接选择排序,直接插入排序认为是初级的排序算法
其中**直接插入排序**的性能是综合最好的.
一般来说,当排序数组规模`n`较小时,直接插入排序可能比任何排序算法都要快,建议只在小规模排序中使用.
3. 希尔排序是对直接插入排序的改进版本,比直接选择排序和直接插入排序快,且随着规模的递增,这种性能提升越明显。
因为算法容易理解,在排序数组中等规模下,我们可以使用它。在非常大的规模下,它的性能也不那么糟糕,但大规模排序还是建议使用以下的高级排序算法
4. 快速排序,归并排序和堆排序是比较高级的排序算法。
目前被认为**综合最好的高级排序算法是快速排序**,快速排序的平均用时最短,大多数的编程库内置的排序算法都是它
';