应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?
Posted 大数据开发学习院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?相关的知识,希望对你有一定的参考价值。
一般而言,个人在面试的时候,会问面试者知道哪些排序算法,选一个自己熟悉排序算法。
讲下它的主要特点(大部分人会选冒泡),比如时间复杂度 / 稳定性 这些,再比如有个序列 (1, 4, 2, 3) 要比较多少次。如果答的不好,就不继续。
如果继续,一般会把重点放在 快速排序 和 堆排,进一步可能会要求手写实现。
比如快速排序,一般而言,肯定是会有 bug 的。其实能手写快排无 bug,不管是不是提前背好的(记性好也是优点),都会有很好的印象。
然后会讨论下在输入是特定序列的情况下,当前的算法有什么缺点或优点。如果这个过程可以一直持续下去,到最后得分都会比较高,但很少见。另外如果面试者比较熟悉基数排序这类算法,会问下一些偏理论的问题,比如比较排序算法的下界是多少,为什么基数排序可以突破这个下界等等。
说那么多,主要是还是想表达,大致了解可能够,但是不够好,最好还是深入理解,如果能死记硬背更好,不然很大概率会被问住。这并不是挑刺。
当然,工作中用到这些面试内容的可能性不高,但是这还是要问下,不然怎么拉开差距了^_^。
『算法导论』的第二部分 『排序和顺序统计学』,是很好的排序算法基础。几十页,认真看。有次我自己去面试别的工作,一个问题想了很久才给出解决方案(相当一步一步重新思考了遍),后来空闲的时候翻『算法导论』才发现里面有现成的解决方案(完全没有印象了,自己想的细节还没写的那么好,悲伤的故事。)。所以多看看。
『编程珠玑』第十一章 『排序』,对快速排序做了细节性的讨论。一般对付面试不成问题。
下面这个图有时间看看,不太常用的了解即可,当然有时间深入更好。自己对它们之间特点(复杂度 / 稳定性 / 是否是比较排序)有基本认识,对他们之间的实现差异以及为什么有一定程度的了解。维基百科其实讲的特别好,就是不知道登得上去不。
以上是关于应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?的主要内容,如果未能解决你的问题,请参考以下文章