简单介绍排序算法

简介: 简单介绍排序算法

冒泡排序, 冒泡排序的时间复杂度为 o(n^2), 稳定性为 看判断是否有带=号,有的话,就不稳定,因为会交换位置,不加的话,就是稳定的。

快速排序



快速排序算法

1、时间复杂度是 nlogn  最坏的情况是 O(n^2)
2、空间复杂度:O(n)
3、稳定性:不稳定
4、快排和归并的对比:
(1)归并排序的处理过程是由下到上,先处理子问题,然后再合并。
(2)快排其实就是从上到下,先分区,在处理子问题,不用合并。
其优化就是优化基准数, 提供一个三个数中间的思路
排序名词
时间复杂度
是否稳定
额外空间开销
插入排序
O(n^2)
稳定
O(1)
冒泡排序
O(n^2) 稳定 O(1)
选择排序
O(n^2) 不稳定
O(1)
希尔排序
O(n^2) 不稳定 O(1)
归并排序
O(nlogn)
稳定
O(n)
快速排序
O(nlogn)
不稳定
O(1)


这么多排序,如何选择


1、分析场景:稳定 or 不稳定

2、数据量:数据量小的时候选什么?比如就50个数, 优选 插入(5000*5000 = 25000000)

3、分析空间:

综上所述:没有一个固定的排序算法, 都是根据情况分析的, 但是如果你不会分析的情况下, 选择归并或者快排

4、 C++ qsort  快排+插入排序

5、jdk 里面有个arrays.sort 一种是基础类型, int double 用的快排, 对象排序, 用到的是归并 + timeSort

目录
相关文章
|
10月前
|
搜索推荐
简单的排序算法
简单的排序算法
70 1
|
10月前
|
搜索推荐 算法
常见的排序算法(1)
常见的排序算法(1)
101 3
|
9月前
|
搜索推荐 算法 Python
其他常见的排序算法
其他常见的排序算法
|
10月前
|
搜索推荐
常见的几种排序算法
常见的几种排序算法
73 1
|
10月前
|
搜索推荐
直接选择排序算法
直接选择排序算法
56 0
|
10月前
|
搜索推荐 算法 Shell
排序算法(C/C++)
排序算法(C/C++)
排序算法(C/C++)
|
算法 搜索推荐 Java
TimSort——最快的排序算法
TimSort 算法是 Tim Peters 于 2001 年为 Python 语言创建的。该算法建立在插入排序和归并排序的基础之上,兼具插入排序和归并排序的优点。TimSort 的平均时间复杂度为 O(nlog(n)) ,最好情况 O(n) ,最差情况 O(nlog(n)) 。空间复杂度 O(n) ,是一个稳定的排序算法。
1716 0
TimSort——最快的排序算法
|
搜索推荐 算法 测试技术
|
搜索推荐 Java
常见的10种排序算法
常见的10种排序算法
120 0
|
算法 搜索推荐 C++