漫画:为什么要分稳定排序和非稳定排序?

举报
且听风吟 发表于 2019/10/28 11:53:26 2019/10/28
【摘要】 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司。今天他去了一家互联网小巨头公司面试了。没想到面试并不像想象中的顺利。【遇见吕老师】【面试现场】小史:原始数据,a2和a4的位置都是3。对于稳定排序来说,排序后的序列,a2一定还是在a4前面。但是对于非稳定排序来说,就不一定了,可能排完序之后,a4反而在a2的前面了。题目:既然最后都是...

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


【遇见吕老师】


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


【面试现场】


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


半分钟过去了。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


【请教大神】


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

【吕老师的课】


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1


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


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


【课后】


课后小史又找到吕老师。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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


本文转载自公众号【java学习之道】。

原文链接:https://mp.weixin.qq.com/s?__biz=MzU4NzYwNDAwMg==&mid=2247484517&idx=1&sn=c9b53dd22d39297cc7ff7359fe77f3e7&chksm=fde8cd28ca9f443e8fa03340c684bb3197eadd425bfe1a3576a01bb6767fe3f1fd219a254824&scene=0#rd




【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。