简单介绍排序算法

简介: 简单介绍排序算法

冒泡排序, 冒泡排序的时间复杂度为 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

目录
相关文章
|
Linux PHP Shell
自建centos5/6/7 64位yum源(官网rsync同步)
自建centos yum源,5、6、7 64位yum源,官网rsync同步
6196 0
|
JSON 测试技术 API
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
这篇文章详细介绍了HTTPRunner 2.x的高级使用技巧,包括工具的设计思想、核心功能、分层测试思想,以及如何搭建开发环境、理解基础概念、掌握关键知识点和进行框架扩展使用。
215 2
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
ESLint—— Failed to load config "standard" to extend from
ESLint—— Failed to load config "standard" to extend from
260 0
|
计算机视觉
【轻松入门】OpenCV4.8 + QT5.x开发环境搭建
【轻松入门】OpenCV4.8 + QT5.x开发环境搭建
231 0
【轻松入门】OpenCV4.8 + QT5.x开发环境搭建
|
设计模式 安全 C++
【C++ const 函数 的使用】C++ 中 const 成员函数与线程安全性:原理、案例与最佳实践
【C++ const 函数 的使用】C++ 中 const 成员函数与线程安全性:原理、案例与最佳实践
457 2
|
机器学习/深度学习 Serverless
机器学习入门案例-鸢尾花
机器学习入门案例-鸢尾花
371 0
|
iOS开发 数据格式
iOS - Quartz 2D 第三方框架 Charts 绘制图表
1、Charts 简介 使用第三方框架 Charts 绘制 iOS 图表。GitHub 源码 Charts Charts 是一款用于绘制图表的框架,可以绘制柱状图、折线图、K线图、饼状图等。Charts 只有 Swift 版本。
2878 1
|
Web App开发 XML 安全
DedeCMS存在文件包含漏洞导致后台getshell(CVE-2023-2928)
DedeCMS存在文件包含漏洞导致后台getshell,攻击者可通过该漏洞获取目标服务器控制权限,进行深度利用。
1059 1
|
SQL 存储 关系型数据库
【MySQL】七种SQL优化方式 你知道几条
【MySQL】七种SQL优化方式 你知道几条
269 0