登陆注册
9284300000167

第167章 白板编程

“这个问题,需要用到高中数学知识。”

推理过程:忽略一胞多胎、不育夫妇以及还没生下男孩就去世的夫妇。

首先要认识到的是,该国的所有家庭,在停止生育之前,都拥有了或即将拥有一个男孩。为什么呢?因为每对夫妇都会不停生孩子,直到生出一个男孩才罢休。除了多胞胎,“一个男孩”就是“只有一个”的意思。因此,有多少家庭,就有多少男孩。

不过,一个家庭可以有任意数量的女孩。对女孩子做一次想象中的人口调查会是个好办法。

邀请全国所有的母亲集中到大房间,通过公共广播系统询问:“请所有第一胎生女孩的母亲举起手来好吗?”自然,有一半的妇女会举手。

如果母亲总数为N,那么N/2会举手,也就代表第一胎生的女孩有N/2个。请在想象中的标示牌上记下来:N/2。

接着你又问:“请第二胎生女孩的母亲举起手来好吗?第一胎、第二胎都是女孩的请别把手放下哦。”有一半的手会放下去,但不会有新的手举起来。第一个问题时就没举手的母亲,不会生第二个孩子,因为她们第一胎就是男孩。

于是,举起来的手是N/4,这意味着第二胎生出的女孩有N/4个。把它记在标示牌上。“请第三胎是女孩的母亲继续举起手好吗?”你明白了吧。继续这么做,直到最后再也没有还举着的手。每一轮问题,举起的手都会放下去一半。

这就带来了一个我们很熟悉的数列:(1/2+1/4+1/8+1/16+1/32+...)×N这一无穷级数之和为1(×N)。女孩的人数等于家庭数N,也等于男孩的人数(或非常接近)。因此,该国的男女比例是1:1。

至于为什么想当然是错的,固然每个家庭都有男孩,有很多家庭没有女孩;但同时所有家庭只会有一个男孩,却有可能有多个女孩。

这两种情况取得了折中。

“完成了前面的开胃菜,下面我们进行更加传统的项目,现在有N个32位整数,需要完成排序。这道题答对双倍奖励,答错双倍惩罚,不允许跳过。”少女在眼前的全息白板上写着,到了“白板编程”环节。

“总之,冒泡排序是错的。”这个***式的笑话,引来一阵大笑。

“这个N是多少呢,我想不同的N结果差异会很大。”墨出尘一眼就识别出了潜在的陷阱。

“我们不妨让N=150,000。”

“那可是相当多的数字了,我想快速排序是个不错的选择。”墨出尘道。

“OK,sounds great,下一步,钟奇正你负责快速排序算法的实现,墨出尘你需要向初中生水平的我,解释清楚什么是快速排序算法。”少女道。

“我该用什么语言来实现?有什么限制吗?”

“为什么我要向初中水平的人解释什么是快速排序算法?”

“我认为你可以在python、c(c++)、java、swift、perl中选择一个,至于为什么要解释给不懂的人,很简单,这测试的是同理心,这与我们设计产品时,切换到用户角度来思考是一个道理。”

钟奇正拿着一支黑色的马克笔,符号开始在白板上涌现,速度快得让人惊讶。

墨出尘开始解释什么是快速排序,他是这样说的:

“快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。首先从数列中挑出一个元素,称为“基准”(pivot);

“重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

“递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序,就完成了快速排序。”

“听起来像是疯子的喃喃自语,我完全不知你在说什么。”少女反馈道。

“我觉得很清晰啊。”

“上面的纯属废话,能看懂你说的是什么的,本身就懂归并排序;看不懂的,依然学不会。这是我对你说的是废话这一观点的逻辑证明。”

“好吧,我承认上面的很晦涩,毕竟自然语言并不是表述算法的合适载体,自然语言本身的歧义性、模糊性使它不具备这种功能,或许你看看钟奇正写的代码就清晰了。”

少女双手抱头,“我不看代码!我不看代码!我不看代码!”

“墨出尘,我认为你举个例子加以说明会好很多。”钟奇正已经完成了白班编码。

“ah,好主意,正好也给你提供一个测试用例,我们拿15个数举个栗子好了,至于15万个数,在逻辑上是一样的。只是运行时间、内存占用会多很多。”

假设有一组数是3、44、38、6、47、15、36、26、27、2、46、4、19、50、48,现在我们对它进行快速排序。

首先我们挑选3作为基准,在过程中我们对小于3的数,进行标记,并替换到前面,当一圈进行完后(到最后一个数48),我们将小于3的数移动到左侧。

3、2、38、6、47、15、36、26、27、44、46、4、19、50、48(2与44替换)

下面让3就这个基准就处于数列的中间位置,即它左边的都比它小,右边的都比它大。数列变为2、(3)、38、6、47、15、36、26、27、44、46、4、19、50、48。

之后以3为分界线,分别对3左边的数列进行快速排序,右边的数列同样进行快速排序。因为左边只有一个数,至此快速排序结束,不再递归。

右边的38、6、47、15、36、26、27、44、46、4、19、50、48数列,以38基准进行快速排序,结果是38、6、15、36、26、27、4、19、47、44、46、50、48

将38基准位置进行调整,6、15、36、26、27、4、19、38、47、44、46、50、48

将38左侧,右侧分别进行快速排序6、15、36、26、27、4、19以6为基准,6、4、36、26、27、15、19,变为4、6、36、26、27、15、19,将36、26、27、15、19进行快速排序,变为26、27、15、19、36,将26、27、15、19、进行快速排序,26,15,19,27,调整位置,15,19,26,27,将15,19进行快速排序得到15,19

所以38左侧快速排序结果为4、6、15、19、26、27、36

38右则为47、44、46、50、48,快速排序得到44、46、47、50、48,对44、46进行快速排序得到44、46,对50、48进行快速排序得到48、50。所以右边结果为44、46、47、48、50

所以最终结果为2、3、4、6、15、19、26、27、36、(38)、44、46、47、48、50。

“这个过程与我的完全一致,我顺便做了个排序可视化,侧面验证了正确性,如果对排序非常感兴趣,可以看这里,

“见识到了结对编程的重要性了吧,我们深入探讨一下,如果数据本身是基本有序的,快速排序算法还有优势吗?”

同类推荐
  • 超神红警在末世

    超神红警在末世

    真理永远只在战舰巨炮的射程之内,规则只为弱者而设,我就是秩序。穿越末世,随身带着红警基地,还能回到现代。苏林俯视星球,有种高处不胜寒的孤独感。哎,无敌是多么的寂寞啊!敢问有谁不服,比人多,征召兵、特种部队给我上;拼火力,坦克军团机甲部队给我碾压过去。啥,战机航母都搞不定,这还得了,把老子的意大利炮呢,先给他种上几十棵大蘑菇。末世,所有的资源都是我的,包括你们;现代,我这科技好用不,我把航母开到你家门口没问题吧;星空,看我的星际舰队威武不,那这个星系要不让给我算了,外星使者战战兢兢的望着抵在他头上的激光炮,心中欲哭无泪,以为遇上个弱鸡,没想到是个王者。无敌就是这么拽。
  • 反穿之我在古代当学霸

    反穿之我在古代当学霸

    【甜宠文】来自22世纪的学霸祁语,来到一个神奇的古兽人位面,兽人都进化出了朝代。且看学霸带领着她的小系统如何用自己的头脑玩转时代…虽然这里不先进,但这里很多帅哥(??.??) 话唠小狼狗, 沉默的傲娇凤凰, 神秘的……一切尽得你来探索 ———— 来了就是朋友*^_^*
  • 电影世界我为王

    电影世界我为王

    这是一个主角在不同的电影世界肆意妄为的故事PS:鄙视那些书名带有“电影”二字,到头来却把电视剧、动漫(连载版)、游戏、小说都往里面塞的书,大杂烩咩?一句话:不专业!
  • 转运快穿:神秘BOSS,太撩人

    转运快穿:神秘BOSS,太撩人

    【1V1,苏爽宠】#沉陌扛起大刀拦路一扔,“打劫!”坐在马车里的妖孽男子魅惑一笑,“劫色吗?我愿意。”沉陌一愣,抱腿就跑,“不了,我克夫的。”自带倒霉体质犹如衰神附体的沉陌莫名其妙死了,然后绑定了一个号称幸运星的系统,要让她去各个位面做任务,美其名曰降低霉运值。只是在跑遍了无数个位面后,沉陌冷冷一笑:大爷的,被骗了,这渣系统的运气比自己还差。偏偏每个位面还总会遇到某个神秘的男人,屁颠屁颠的跟在她后面。#[男强女强,欢迎入坑哦~]
  • 万界超级网吧系统

    万界超级网吧系统

    32岁小网吧老板郝蒙,成为被系统选中的幸运儿。从此,他的网吧联通万界,各种大神级人物对他的网吧趋之若就,为了一台电脑大打出手。萧炎带着药老与唐三众人决战峡谷,玉帝为了开荒魔兽组建天庭公会,漫威的英雄们全都迷上了御剑,太上老君为了一件暗金装备不惜用金丹换取。而郝大老板看着这一切,仿佛年轻了十岁,回到了自己曾经与兄弟们日夜奋斗在游戏世界的日子,不禁流下了热泪,脑海中回想着已经逝去的回忆,加入了激情的战斗之中!在这里,你可以看到曾经游戏厅里的KOF,通宵开荒的魔兽世界,为了转生奋斗的石器时代,射击游戏的巅峰之作反恐精英等等划时代的经典游戏.
热门推荐
  • “眼底影像还原仪”之研究

    “眼底影像还原仪”之研究

    光盘,广西第四、六、七届签约作家,中国作家协会会员、广西作家协会理事。获广西、全国报纸副刊好作品二等奖以上30余次。创作及出版长篇小说6部,在花城、上海文学、作家、钟山、北京文学等中国核心刊物发表作品若干,迄今共发表各类作品150余万字。
  • 鸿元至尊

    鸿元至尊

    无忧无虑,平淡一生,藏身深山,枯燥修炼,这不是张显想要的生活。美女相伴,仗剑江湖,藐视八方,争霸天下,只是他享受温心与热血的过程,九天之上浩瀚星域才是他耀武扬威的战场.....
  • 丑女不愁嫁:玉面美娇娘

    丑女不愁嫁:玉面美娇娘

    她是五毒教最小的师妹,却是资质最差的一个,也是最丑的一个。因为从小脸上的伤疤,她不得不带着半边面具示人。她被众师兄逼上了寻找大师兄之路。她是爬山涉水啊,翻山越岭啊,经历了千难万险终于找到了传说中的‘大师兄’。眼前这个颓废得不行的男人,真的是大师兄吗?他那唏嘘的胡渣子,忧郁的眼神,还有那神乎奇技的刀法……都深深的吸引了她!等等!他真的是传说中的大师兄吗?为什么混混打他都不还手,真是越看越窝囊,本来还指望他一展五毒教的绝学的,怎么变成了她救他?有没有搞错啊!难道她认错人啦?不会吧!
  • 夜宸

    夜宸

    黑暗之中,夜宸高举王座,执掌死亡,恐怖是她的使者,痛苦是她的侍从,战争是她的先锋,瘟疫是她的护卫。经历无限的世界,她将死亡带给所有人,完成惊悚的任务,她将敌人的头颅踏在脚下。本书读者群:壹捌柒陆玖肆壹叁零
  • 独家星闻:苏少,求轻宠!

    独家星闻:苏少,求轻宠!

    “苏三少精神有问题!!”“他吃的药比我吃的饭还多。”“听说他是圈子里身份最低贱的私生子……”那个时候,帝都的人都认为苏三少是走了狗屎运,不费吹灰之力就得到别人梦寐以求的权贵。
  • 泾皋藏稿

    泾皋藏稿

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。汇聚授权电子版权。
  • 纵横捭阖:苏秦

    纵横捭阖:苏秦

    “中国文化知识读本”丛书是由吉林文史出版社和吉林出版集团有限 责任公司组织国内知名专家学者编写的一套旨在传播中华五千年优秀传统 文化,提高全民文化修养的大型知识读本。 管宝超编著的《纵横捭阖(苏秦)》为丛书之一,介绍了苏秦传奇的一 生。 《纵横捭阖(苏秦)》中优美生动的文字、简明通俗的语言、图文并茂 的形式,把中国文化中的物态文化、制度文化、行为文化、精神文化等知 识要点全面展示给读者。点点滴滴的文化知识仿佛颗颗繁星,组成了灿烂 辉煌的中国文化的天穹。能为弘扬中华五千年优秀传统文化、增强各民族 团结、构建社会主义和谐社会尽一份绵薄之力。
  • 两世人妖恋

    两世人妖恋

    三年前,是他救了我,那时候,他还是个穷书生,房无半间,地无半亩,但他却有一副难得的好心肠,他救了我,那时的我还是一只白狐……
  • 经慈州感谢郎中

    经慈州感谢郎中

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。汇聚授权电子版权。
  • 荆棘天使

    荆棘天使

    茉拉伊原本是看守第五重天的天使,因为无意中放跑了邪眼沙利叶而被惩罚,降职为守护天使。她负责守护的人类出生时就有着银灰色的双瞳,被视为“无瞳之子”,关进了死亡之塔。为了证明他不是恶魔,茉伊拉违反了天界的规定,赐予他可以看见天使的眼睛。可是仇恨蒙蔽了他的双眼,他与九尾狐妖闻人霜订下盟约,走上复仇之路。天使、恶魔、血族,所有能代表梦三生的奇幻元素都将一一呈现,这段跨越了种族的爱恋,必定铸成一段新的传奇。