2、排序

简介: 排序算法分为比较类和非比较类。比较类包括快排、归并、堆排(平均时间O(n log n))和插入排序(O(n²)),适用于不同数据规模与有序度;非比较类如计数、桶、基数排序,可达到O(n),依赖数据特征。实际应用中常结合多种算法优化性能。

2.1【问】请介绍一下你知道的排序算法有哪些
初级答法
常见的排序算法有:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等
PS.
,适合对以上排序算法一知半解,不太自信的同学,所谓言多必失,回答基本的就行,但要对接下来【各种排序的时间复杂度】的追问做到心中有数,这个必须背一背(参考后面的表格)
进阶答法
排序算法大致可分为两类:
。A.基于比较的排序算法
·B.非比较排序算法
比较排序算法有:快排、归并、堆排序、插入排序等非比较排序算法有:计数排序、桶排序、基数排序等比较排序算法中
·快排、归并、堆排序能够达到 $$O(n \cdot Vog{n})$$的(平均)时间复杂度·而插入排序的(平均)时间复杂度是 $$O(n^2$$
但并不是说复杂度高的算法就差,这要看数据规模和数据有序度,例如
数据量小,或是有序度高的数据就适合用插入排序
同样是数据量人的数据排序,如果数据的有序度高,归并优于快排
快排虽然是比较排序中最快的算法,但若是分区选取不好,反而会让排序效率降低
工业级的排序都是混合多种排序算法,例如java 排序的实现就是混合了插入、归并与快排,不同的数据规模、不同场景下切换不同的排序算法至于计数、桶、基数可以达到进一步让时间复杂度降至$$0(n$$,当然这与被排序数字的位数、范围等都有关系,您想知道的话,咱们可以细聊。
PS.
适合对这些排序算法非常熟悉的同学,这时应注重回答的条理性
首先,对算法进行简单分类,让答案更为清晰
其次,不要等面试官来继续追问,而是主动回答各个算法的时间复杂度和适用场景,体现你对它们的熟悉定要对各个算法的细节有充分准备,否则问到答不出来就尬了,这时不如降级为【初级答法】第

相关文章
|
1天前
|
存储 缓存 算法
学习数据结构和算法的框架思维
本文系统梳理数据结构与算法核心思想:所有数据结构本质为数组或链表的变形,基本操作均为遍历与访问;算法本质是穷举,关键在于“无遗漏”和“无冗余”。掌握框架思维,方能以不变应万变,高效刷题。
学习数据结构和算法的框架思维
|
1天前
|
存储 自然语言处理 分布式计算
08 | 索引构建:搜索引擎如何为万亿级别网站生成索引?
针对超大规模数据,可通过分治与多路归并生成内存外倒排索引。先将文档分批在内存建索引,再写入有序临时文件,最后归并为全局索引。检索时结合内存哈希、B+树及分层加载技术,提升效率。
|
1天前
|
存储 负载均衡 搜索推荐
大规模检索系统
本讲介绍大规模检索系统如何通过分布式技术加速检索。通过索引拆分,将倒排索引分散到多台服务器内存中,减少单机数据规模和磁盘访问,从而提升单次查询效率。结合分发服务器与负载均衡,实现高吞吐、低延迟的分布式检索架构。
|
1天前
|
SQL 人工智能 API
Apache Flink 2.2.0: 推动实时数据与人工智能融合,赋能AI时代的流处理
Apache Flink 2.2.0 发布!新增 ML_PREDICT 与 VECTOR_SEARCH 实时 AI 函数,增强物化表、Delta Join 及连接器能力,优化批处理与 PyFlink。73 位贡献者共建,9 大 FLIP,220+ 修复改进,助力智能低延迟数据管道。
Apache Flink 2.2.0: 推动实时数据与人工智能融合,赋能AI时代的流处理
|
1天前
|
存储 关系型数据库 调度
微服务原理篇(XXLJOB-幂等-MySQL)
本课程涵盖XXL-JOB任务调度、幂等性解决方案及MySQL数据库核心知识。学习内容包括:掌握XXL-JOB的分布式调度优势与搭建使用,理解并实现幂等性以避免重复操作;深入MySQL存储引擎差异、索引机制(如B+树)、回表与覆盖索引原理,并熟悉SQL调优与分库分表策略,提升系统性能与数据一致性保障能力。
 微服务原理篇(XXLJOB-幂等-MySQL)
|
1天前
|
SQL 监控 关系型数据库
4、SQL性能分析及优化
通过SkyWalking链路追踪可定位慢接口及慢SQL,或开启MySQL慢查询日志(如设置超1秒记录)来识别执行慢的SQL。结合explain分析执行计划,关注key、type、extra等关键指标,判断索引命中与性能瓶颈,避免全表扫描,优化SQL性能。(238字)
|
1天前
|
存储 算法 Java
03 | 哈希检索:如何根据用户 ID 快速查询用户信息?
本文介绍了哈希表的原理与实现。通过哈希函数将键转换为数组下标,利用数组随机访问特性实现O(1)级查询。针对哈希冲突,讲解了开放寻址法(线性探查、二次探查、双散列)和链表法两种解决方案,并分析其优劣。最后指出哈希表需足够空间以保持低装载因子,且不支持有序操作,适合精确查找但不适合范围查询。
|
1天前
|
Java Nacos Maven
Eureka服务注册与发现
本章介绍Eureka服务注册与发现功能,搭建eureka-server并实现user-service、order-service的注册与多实例部署,掌握服务动态发现机制,为后续Nacos替换奠定基础。
10 0
|
1天前
|
存储 机器学习/深度学习 编解码
预训练技巧
预训练是大模型的核心基础,涵盖混合精度、分布式训练、ZeRO优化、FlashAttention等关键技术,通过高效计算与显存优化,实现大规模模型的快速稳定训练。
|
1天前
|
缓存 网络协议 关系型数据库
01丨核心原理:能否画张图解释下 RPC 的通信流程?
RPC(远程过程调用)是一种实现跨服务透明调用的技术,屏蔽网络通信细节,让开发者像调用本地方法一样调用远程服务。它通过序列化、协议解析和动态代理等机制完成远程调用,是微服务架构的“经络”,广泛应用于分布式系统中,提升开发效率与系统解耦能力。