学完排序,你能够感受到,我们的算法研究者们都是在“似乎不可能”的情况下,逐步提高排序算法的性能的。在剩下的几分钟时间里,我们再来做一道智力题,感受一下把不可能变为可能。

    请问如何把图9-11-1中用四段直线一笔将这九个点连起来?
    image.png
    大家举手很快,因为绝大多数同学应该都看过这道题目。没有做过题目的同学通常十有八九会落入一个小小的陷阱,在九个点围成的框中打转转,然后发现至少要五段以上的直线才能连成。结果是,要找到答案,必须在思维上突破这九个点所围成的框框的限制,如图9-11-2所示。
    image.png
    如果智力题这就结束了,那就不考大家了。现在我的问题是如何做到三段直线一笔将这九个点连起来?

    此时,大家都在交头接耳,心里一定想着,“这怎么可能?”我来公布答案,那就是用一条“Z”字线即可一笔连成。也许,最快找出这个答案的是那些没有学过数学的孩子。作为成人,我们已被另一些“框框”所框住大脑。那就是数学上有一条基本公理:两条平行线永不相交。另外数学上有另一个基本假设:点没有大小。可在现实中任何一点都会有大小。突破这一限制,只要无限延长“Z”字三段线,九点必可一笔连。来看图9-11-3。
    image.png
    有同学说,我图中的点比刚才的要大,这不符已。”

    本章的结束,其实也就是数据结构这门课的结束了。数据结构和算法,还有很多内容我们并没有涉及。要想真正掌握数据结构,并把它应用到工作中,你们的路还很长。

    我们生命中,矛盾和困惑往往一直伴随。很多同学来学习数据结构,其实并不是真的明白它的重要性,通常只是因为学校开了这门课,而不得不来这里弄个PASS,过后,真到需要用时,却发现力不从心而追悔莫及。比如图9-11-4所示,悲剧通常就是这样产生的。因此尽管现在是课程的最后,对于个别没有重视这门课的同学来说有些晚了,我还是想再亡羊补牢:数据结构和算法对于程序员的职业人生来说,那就是两个圆圈的交集部分,用心去掌握它,你的编程之路将会是坦途。
    image.png
    最后送大家电影《当幸福来敲门》中的一句话:

    • You got a dream, you gotta protect it.People can’t do something themselves, theywanna tell you you can’t do it. If you wantsomething, go get it. Period.
    • 如果你有梦想的话,就要去捍卫它。当别人做不到的时候,他们就想要告诉你,你也不能。如果你想要些什么,就得去努力争取。就这样!

    同学们,再见!