当前位置: 首页 > news >正文

四大常用排序算法

冒泡排序(相当于排身高):

1.概念:通过重复比较相邻元素并交换位置,使最大元素逐步 "浮" 到数组末端。

2.特点:

(1)时间复杂度:O (n²);

(2)空间复杂度:O (1);

(3)稳定性:稳定;

(4)适用于小规模数据或几乎有序的数据。

3.字符含义:n表示数组长度,n-1表示此次排序需要排几轮,n-i-1表示每轮排序需要比较几次(一比较就交换数据)

4.代码实现:

选择排序相当于打擂台,输的人一直打,直到所有人都上过场):

1.概念:每次从待排序部分找到最小元素,与待排序部分的第一个元素交换位置。(第一轮找到最小的放在第一位,第二轮找到剩余部分最小的放在第二位……)。

2.特点:

(1)时间复杂度:O (n²);

(2)空间复杂度:O (1);

(3)稳定性:不稳定;

(4)交换次数少(n-1次),适用于数据移动成本较高的场景。(一轮比完才交换数据)

3.代码实现:

快速排序(立标杆):

1.概念:采用分治法,选择一个基准元素,将数组分为两部分,左部分小于基准,右部分大于基准,然后递归排序两部分。

2.特点:

(1)时间复杂度:平均 O (nlogn),最坏 O (n²);

(2)空间复杂度:O (logn);

(3)稳定性:不稳定;

(4)实际应用中性能优秀,适用于大规模数据。

3.代码实现:

插入排序(相当于整理扑克牌):

1.概念:将未排序的元素逐个插入到已排序序列的适当位置

2.特点:

(1)时间复杂度:O (n²)(最坏和平均情况),最好情况为 O (n)(已排序数组)

(2)空间复杂度:O (1)(只需要一个临时变量)

(3)稳定性:稳定(相等元素的相对顺序不会改变)

(4)适用场景:

a.小规模数据排序;

B.部分有序的数据(接近有序时效率很高);

c.数据增量式插入场景(如实时数据排序).

3.代码实现:

http://www.dtcms.com/a/339005.html

相关文章:

  • 【线性基】P4301 [CQOI2013] 新Nim游戏|省选-
  • Voice Agents:下一代语音交互智能体的架构革命与产业落地
  • 大语言模型中的归一化实现解析
  • elasticsearch8.12.0安装分词
  • 【Spring Boot把日志记录到文件里面】
  • 郑州续面事件的技术视角:网络传播机制与舆情应对技术方案
  • Git+Jenkins实战(一)
  • Windows系统维护,核心要点与解决方案
  • Spring Boot 4 的 11 项重大变更全面解析!
  • 企业级 RN Android 完整 CI/CD 自动化解决方案
  • 从《捕风追影》看地理信息大屏可视化:不止于电影的 “天眼” 黑科技
  • 笔试——Day43
  • 2.Kotlin 集合 List 所有方法
  • 服务器无公网ip如何对外提供服务?本地网络只有内网IP,如何能被外网访问?
  • Netty内存池中ChunkList详解
  • STM32G4 Park及反Park变换(二)实验
  • 推理还是训练 || KV缓存和CoT技术
  • 快速将 MySQL 数据库发布为 API:使用 QuickAPI 实现 SQL2API
  • SConscript 脚本入门教程
  • ChatBI驱动的智能商业决策:奥威BI的深度实践
  • 图像增强——灰度变换增强(线性,对数,指数)、空间滤波增强、频域增强、主成分/彩色合成增强(原理解释和代码示例)
  • 源码编译安装LAMP架构并部署WordPress(CentOS 7)
  • Unity音频管理:打造沉浸式游戏音效
  • BCT8937A Class T Audio Amplifier
  • 小程序开发APP
  • 车载以太网gPTP时间同步:从协议到工程实践
  • 如何用20%计算成本训练LLaMA4级大模型?MoE稀疏化架构实战指南
  • 第14章 现代React特性
  • 使用 MySQL 为 SpreadJS 协同服务器提供存储支持
  • 前后端联合实现文件下载,实现 SQL Server image 类型文件下载