请介绍一下你知道的排序算法有哪些

简介: 排序算法分为比较类与非比较类。比较类如快排、归并、堆排平均时间复杂度为O(n log n),插入排序为O(n²),但小规模或高有序数据下插入排序更优;实际应用常混合多种算法,如Java的排序实现。非比较类如计数、桶、基数排序可达O(n),依赖数据特性。

排序算法大致可分为两类:

  • A. 基于比较的排序算法
  • B. 非比较排序算法

比较排序算法有:快排、归并、堆排序、插入排序等

非比较排序算法有:计数排序、桶排序、基数排序等

比较排序算法中

  • 快排、归并、堆排序能够达到 $$O(n \cdot \log{n})$$的(平均)时间复杂度
  • 而插入排序的(平均)时间复杂度是 $$O(n^2$$
  • 但并不是说复杂度高的算法就差,这要看数据规模和数据有序度,例如
  • 数据量小,或是有序度高的数据就适合用插入排序
  • 同样是数据量大的数据排序,如果数据的有序度高,归并优于快排
  • 快排虽然是比较排序中最快的算法,但若是分区选取不好,反而会让排序效率降低
  • 工业级的排序都是混合多种排序算法,例如 java 排序的实现就是混合了插入、归并与快排,不同的数据规模、不同场景下切换不同的排序算法

至于计数、桶、基数可以达到进一步让时间复杂度降至$$O(n$$,当然这与被排序数字的位数、范围等都有关系,您想知道的话,咱们可以细聊。

相关文章
|
1月前
|
安全 算法 网络协议
从明文到加密:HTTP与HTTPS核心知识全解析
本文深入解析HTTP与HTTPS的核心差异,揭示HTTPS如何通过SSL/TLS协议、CA证书和混合加密机制,解决HTTP的窃听、篡改与冒充三大安全问题,全面科普网络安全关键技术。
613 6
|
1月前
|
传感器 安全 前端开发
USB专用过压保护ic芯片选型指南
平芯微电子推出高性能过压过流保护芯片系列,涵盖OVP/OCP双重防护、超低内阻、宽压可调等创新技术,提供从消费电子到车载系统的全场景电源保护方案,助力提升产品可靠性与竞争力。
|
1月前
|
Java Go 开发者
IDEA开发常用的快捷键
IntelliJ IDEA常用快捷键汇总:涵盖代码生成(如main、sout)、编辑(复制、删除、重命名)、导航(跳转、查找)、格式化、代码阅读及版本控制等高频操作,提升开发效率。熟练掌握可显著优化编码体验,是Java开发者必备技能。
208 1
|
22天前
|
传感器 人工智能 边缘计算
无人机行人精准检测数据集(7000张图片已划分、已标注)|AI训练适用于目标检测任务
本数据集包含6990张无人机航拍图像,已标注并划分训练集与验证集,聚焦单一类别“person”,适用于YOLO系列模型,助力公共安全、城市治理等场景下的行人精准检测与实时监控。
|
1月前
|
传感器 安全 机器人
2026年移动机器人技术架构与选型方法论
随着AI技术发展,移动机器人广泛应用于物流、制造、服务、医疗等领域。本文从技术架构、性能指标、场景适配出发,系统梳理选型方法论,涵盖导航精度、交互能力、续航负载等核心参数,结合仓储搬运、柔性装配、商业接待、医疗康养四大场景需求,提出“五步决策法”,助力科学选型。
|
1月前
|
安全 前端开发 NoSQL
【RuoYi-SpringBoot3-Pro】: 三级等保安全配置
RuoYi-SpringBoot3-Pro 内置三级等保安全配置,涵盖密码策略、登录控制、IP 黑名单、会话管理等功能,通过动态参数实现无需重启的灵活管控,全面满足国家信息安全等级保护三级要求,提升系统安全性与合规性。
181 0
|
4月前
|
机器学习/深度学习 人工智能 算法
计算机的起源
从机械齿轮到量子计算,计算机的演进是一部人类智慧的史诗。本书讲述跨越五千年的计算文明史:从算盘到AI,从巴贝奇到图灵,揭示科技背后的逻辑与梦想,展现数字时代如何重塑世界。
|
5月前
|
机器学习/深度学习 数据采集 算法
量子机器学习入门:三种数据编码方法对比与应用
在量子机器学习中,数据编码方式决定了量子模型如何理解和处理信息。本文详解角度编码、振幅编码与基础编码三种方法,分析其原理、实现及适用场景,帮助读者选择最适合的编码策略,提升量子模型性能。
434 8
|
2月前
|
安全 Java 索引
说说 java 中常见的集合类
本文介绍了Java集合框架的核心接口(Collection、List、Set、Map)及其常见实现类。图示展示了类间关系,重点解析ArrayList、LinkedList、HashSet、HashMap等实现原理与性能特点,并指出线程安全及进阶特性,助你掌握集合体系关键知识点。
HTTP协议中常见的状态码 ?
HTTP状态码分为1xx、2xx、3xx、4xx、5xx五类。常见状态码包括:101(切换协议,如WebSocket)、200(请求成功)、302(重定向)、401(未认证)、404(资源未找到)、500(服务器内部错误),广泛应用于Web开发中。