写给小白:计算机是怎么排序的(一)

文章首发:微信公众号【九粽】


大噶好!转眼间我们上班的上班,上学的上学,相信已经有一阵子了。

面对工作中要处理的花花绿绿的数字,我们最常用的操作可能就是——花里胡哨看不出来什么,要不先排个序吧。

咔咔一点,数据排好了序,仿佛是等待你检阅的士兵。

排序——自古以来就是非常实用的一个理清事物的方法。比如早操排队会按高矮排序,史料记载会按时间排序,单词查找会按字母排序,YB国会按沙雕程度排序(国王第一,其余全部并列第二)。

计算机世界也是一样,对排序有着强烈的执念。既然有了这个需求,下面就是怎么办的问题了。

注意:阅读本文不需要任何计算机知识,相反的,阅读本文过后你会具备一些计算机常识。

现在,你前面站着一排小学生准备做早操,首先需要你想办法把他们从矮到高排成一列,下面的数字代表小学生的高度:

7,6,9,8,5,1 (不要在意“1是多高”这种细节)

为了彰显我本人的聪明才智,排序后正确答案我现在就给出来,是1,5,6,7,8,9。

此刻我相信,家里有体育老师经常给学生排队的,在这个问题上应该不输给数学老师。一下子映入脑海的可能就有以下几种方案。

方案一:你也许会说,这个简单,我先一眼揪出那个最高的,然后把他直接放到最后面。再在剩下的里面揪出最高的,排在倒数第二个……依次类推。

这个方法非常直观,并且有效。每次选择出一个最高的,在计算机里面的名词也很直白,就叫选择排序

问题来了,如果有1000个学生,一眼望不到头。那么这是体育老师就要和数学老师合作了:体育老师从头跑到尾,看当前谁是最高的;数学老师站在队尾,告诉体育老师他刚才已经记到哪儿了。

【亲爱的,我跑了一趟,这个最高!】

【么么哒,把这学生交给我吧,你去看看剩下的谁最高】

【亲爱的,我又跑了一遍,现在这个最高!】

【么么哒,这是第二高的学生,你再去看看剩下的】

……

【亲爱的,我又跑了一遍,现在排到哪儿了?】

【我这里有233个排过序的了,你再跑一遍看剩下谁最高】

……

最后排队成不成功我不知道,但是体育老师估计是要累死了。

方案二:体育老师站了出来,mmp劳资不跑了!全体都有!我吹一声哨子,每个人就跟前面的人比比个子,要是前面的人高,你就跟他换一换!

㘗(qū)一声哨响,个子矮的人往前换了换;

又一声哨响,个子矮的人又往前换了换;

……

最终,个子最矮的那个小朋友站在了队伍最前面。

这个最矮的小朋友,每次前进一位,就像小鱼儿吐出的泡泡,Bububu的一点一点浮到了水面上(就是队伍最前面)。这种自底而上的挪动过程,计算机算法的名字也很直白,叫冒泡算法

问题又来了,如果有1000个小朋友等待排队,这时候体育老师会怎么吹哨呢?

【㘗!——】过了一会儿,最矮的小朋友排到了第一个;

【㘗!——】又过了一会儿,第二矮的小朋友也浮到了队伍前面,跟第一位比了比之后,排在了第二个。

……

【㘗!——】第299次哨响过后,前几名的小朋友哭了:【老师,我们的位子早就固定了,别让我们每次都比较了吧?】

【这可咋办呢?……】这个问题涉及到了体育老师的知识盲区。

【亲爱的我来帮你吧】关键时刻还是数学老师挺身而出,【你第一次吹哨,说明第一个小朋友就已经排好了。这样,跟刚才一样,你每次吹完哨我都帮你数着,那前面的小朋友们就不用再比较了】

【亲爱的你可真聪明!】体育老师眼角泛起了泪花。

【就一点小忙,不用感动到落泪……】

【不是感动,是我tm吹了1000次哨子,哨子牺牲了……】

方案三:得,这下体育老师哨子也没了,还是得跑。不过我们似乎可以在方案一的基础上改进一下。

(别告诉你已经忘记方案一是啥了……)

之前体育老师每次都要从头到尾跑,找出最高的小朋友。

现在让他省省劲儿:数学老师那儿不是已经排好队了嘛,体育老师提起一个没排队的小朋友走到数学老师的队里。

从前往后走,边走边跟手上的小朋友比较。

找到合适的地方就把小朋友往那儿一放就行,不用往后走了。

搞事的那1000个小朋友又来了……

【亲爱的,这是第一个小朋友,放你这儿。】

【这是第二个小朋友,让我看看……你比第一个小同学高,你就排他后面吧】

【这是第三个小朋友,嗯…你比第一个高,但比刚才第二个矮,你就排中间吧…】

……

【这是第666个来排队的小朋友,在排好队的同学里…我瞅瞅…你比前100名高,但比101名矮,那你就排100的后面吧】

就这样,虽然每次体育老师还是要跑来跑去,但是每次点到为止,不需要从头跑到尾。这种每次提着小朋友插♂入到合适位置的方法,计算机语言同样直白,就叫插入算法

到这里为止,各位已经明白了计算机三大简单排序算法,可以给自己鼓个小掌以示鼓励,或者点一顿烧烤作为奖励。

不过这几个方法的弊端也是显而易见的:

(1)一定要数学老师和体育老师合作;

(2)体育老师总是累得要死要活。

如果把体育老师换成一个别的老师,可能光是跑来跑去就要耗费不少时间,为了彰显体育老师的特长,在计算机里,我们总得有个酷炫的名词来衡量一个方法花了多少时间,它就叫 时间复杂度

那上面几个方法都花了多少时间呢?我们再把那1000个小朋友拉出来。

——首先,数学老师手里的学生一开始没有,然后越来越多,每次增加一个已经排好队的学生。

——每当数学老师手里增加一个排好队的学生,就意味着这是体育老师跑遍了剩下的学生,为她找出来的。

——那这时间就是1000*1000 (四舍五入就是一个小目标啊)

——体育老师的这种舍己为人,无私奉献的精神,我们称之为 舔狗精神 白求恩精神。

——虽然体育老师后来改进了,不用全都跑,但如果人数特别特别多,他节省的时间比起巨大的数据量,可以忽略不计。

——即,以上算法的时间复杂度都是n²

还能不能给体育老师一点活路?……

直到1959年,有一个叫Shell 的人横空出现,提出了一个划时代的方案……

你是不是那个Shell?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 参考:.统计学第七版-第4章数据的概括性度量; 本周的主要学习内容是数据的描述性统计,本文主要从以下三个方面来进行...
    萌新产品小霸王阅读 262评论 0 0
  • 清词 昨夜心尘昨夜风,云梦月梦两不同。 万象有生自有灭,兆色非一亦非空。 因缘际会聊且始,果业冥幽尚未终。 今朝忧...
    吾兮无兮阅读 155评论 0 0
  • 做的正确就会有好结果吗? 大多数的痛苦都是幻觉,甚至是一时的感觉。 真的是这样吗?那为什么那么多人得抑郁症?难道都...
    夏天_07ba阅读 166评论 1 0
  • 百日练,一百天看一百本书,打卡第12天,《房思琪的初恋乐园》,30分钟,看完,1500字/分钟,理解70%。讲到房...
    骑了蜗牛闯世界阅读 188评论 0 0
  • 帕金森定律,指的是权力的危机。如果店面中招员工,找到一个工作能力比较强的,那这个店面中店长的位置就有所难保,...
    wh王辉阅读 187评论 0 0