五分钟小知识:为什么要分稳定排序和非稳定排序?

简介: 本文主要为大家讲解一下稳定排序和非稳定排序的相关知识。

原文链接

小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。
image.png

今天他去了一家互联网小巨头公司面试了。


没想到面试并不像想象中的顺利。

image.png


【遇见吕老师】

image.png
image.png
image.png


【面试现场】


image.png
image.png
image.png
image.png
image.png
image.png
image.png


小史:原始数据,a2和a4的位置都是3。对于稳定排序来说,排序后的序列,a2一定还是在a4前面。但是对于非稳定排序来说,就不一定了,可能排完序之后,a4反而在a2的前面了。

image.png
image.png
image.png


题目:既然最后都是有序序列,为什么还要分稳定和非稳定的排序呢?

image.png


半分钟过去了。

image.png
image.png
image.png
image.png


【请教大神】

image.png
image.png
image.png

吕老师:笔试主要问是什么,而面试主要问为什么。


image.png
image.png
【吕老师的课】

吕老师一上课就把问题抛了出来。

image.png



话音刚落,蛋哥就站了起来。


image.png


蛋哥:咱们每次考试完成后,都会按照分数进行排序。分高的自然就是第一名。分数相同的同学怎么办呢?那就是按照上次的分数来分高低。上次分高的排在前面。


image.png


蛋哥:这个时候就应该用稳定排序,在上次排好序的序列上,再针对这次的分数进行排序。稳定排序的结果能保证这次相同分数的人,上次分高的在前面。


image.png


蛋哥:再比如我们班的同学,已经按照学号排好序了。现在要按照身高排序。如果是稳定排序排好之后,身高相同的同学,还是按照学号顺序的。


image.png


吕老师:没错,其实就是有两个排序关键字的时候,稳定排序可以让第一个关键字排序的结果服务于第二个关键字排序中数值相等的那些数。


小史听完后,觉得很惭愧,其实这些场景自己也遇到过,早该想到的。


【课后】
课后小史又找到吕老师。
**
image.png
image.png

**
吕老师:你看的东西很多,是你学到了很多知识。但是这些知识之间的关联,需要你进行深入思考才能得到的。找到知识之间的联系,找到知识和实际场景之间的联系,多想想为什么,才能做到融会贯通。

来源 | 五分钟学算法
作者 | 程序员小吴

相关文章
|
消息中间件 IDE JavaScript
用代码画时序图!YYDS
最近通过代码来看看这个图,给大家看图、UML ,感觉很给大家分享。 大家平时用他们出的图呢,是用什么样的图,都用画图来画的,我们用画图来画图 呢draw.io?processOn 今天给大家介绍一款想要的作品,用的画图,配合IDE使用PlantUML!
用代码画时序图!YYDS
|
6月前
|
测试技术 API 内存技术
LangChain 还是 LangGraph?一个是编排一个是工具包
本文对比LangChain与LangGraph在真实代码审查流水线中的实践:二者API、Agent逻辑与Gemini 2.5 Flash调用完全一致。LangChain适合线性流程,简洁高效;LangGraph则以状态机支持条件分支、循环重试与人工干预,是复杂编排的唯一解。二者非替代关系,而是抽象层级互补——LangChain v1.0的Agent已构建于LangGraph之上。
1459 3
LangChain 还是 LangGraph?一个是编排一个是工具包
|
存储 NoSQL MongoDB
阿里云MongoDB 8.0最新发布
MongoDB 8.0 在性能优化、工作负载管理、数据库扩展、安全性增强及向量搜索能力等方面实现了多项突破。新版本大幅提升主从复制效率,降低延迟,并支持灵活的分片迁移与在线重分片。同时,新增 query shape 和持久化索引过滤器功能,帮助用户精细化管理高并发场景。此外,社区版引入全文与向量搜索,助力 AI 应用开发。阿里云作为国内首家支持 MongoDB 8.0 的厂商,提供高可用、弹性扩展和智能运维等云原生特性,满足多样化业务需求。
1425 26
|
9月前
|
算法 NoSQL Java
拒绝服务雪崩!4种经典限流算法图文详解(附Java实战代码)
限流是保护系统的“保险丝”,防止突发流量导致服务雪崩。常见算法有:固定窗口(简单但有突刺)、滑动窗口(精准平滑)、漏桶(恒定处理速率)和令牌桶(允许突发,最常用)。单机限流可用计数器或Guava,分布式场景则依赖Redis实现全局控制。
1426 9
|
存储 缓存 文件存储
uv安装python及其依赖的加速方法
国内在使用uv的时候,可能会涉及到装python的速度太慢的问题,为了解决这个问题,可以使用`UV_PYTHON_INSTALL_MIRROR`这个环境变量。除此以外,对于多人协作场景,`UV_CACHE_DIR`也是一个有用的环境变量。本文会介绍这两个变量。
9302 10
|
人工智能 监控 搜索推荐
项目管理GTM策略是什么?它需要哪些核心能力?
GTM(Go-To-Market Strategy,市场进入策略)是将产品或服务有效推向市场的系统化方法,涵盖市场调研、客户定位、推广全流程。
4244 5
项目管理GTM策略是什么?它需要哪些核心能力?
|
Linux 虚拟化 数据安全/隐私保护
银河麒麟V10 VMWare安装保姆级教程
银河麒麟V10 VMWare安装保姆级教程
24868 5
银河麒麟V10 VMWare安装保姆级教程
|
人工智能 API 决策智能
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
【7月更文挑战第8天】智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
22890 134
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
|
人工智能 API 知识图谱
使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
本文介绍了使用不同模型和平台体验GraphRAG的过程。首先通过OpenAI的GPT-4O Mini模型对沈从文的《边城》进行了分析,展示了如何安装GraphRAG并配置参数,最终实现了对文本的有效查询。随后,文章探讨了在国内环境下使用SiliconCloud作为替代方案的可能性,以《三国演义》为例,演示了使用SiliconCloud模型进行相同操作的步骤。此外,还讨论了使用本地模型如Ollama和LM Studio的可能性,尽管受限于硬件条件未能实际运行。最后,提出了混合使用在线对话模型API与本地或在线嵌入模型的方法,并列举了一些能够使GraphRAG流程跑通的大模型。
1074 10
使用SiliconCloud尝试GraphRag——以《三国演义》为例(手把手教程,适合小白)
|
Shell 分布式数据库 Hbase
如何使用 HBase Shell 进行数据的批量导入和导出?
如何使用 HBase Shell 进行数据的批量导入和导出?
1554 5

热门文章

最新文章