面试官:连个冒泡排序都写不出来,你这五年都干些什么了?

分享职场程序员生活、职场攻略、领导同事相处技巧和创业资源

文|洪生鹏

面试时,排序算法经常会遇到。

张工毕业5年了,一直在做java开发,最近到某互联网公司面试,做了笔试题后,面试官看了觉得还不错,于是就让他手写冒泡选择排序法,张工写不出来,面试官直接怂了回去:毕业5你那了,连个冒泡排序都写不出来,你这五年都干些什么了。张工一脸的无助,不过确实不应该,类似冒泡排序这样基础的算法,平时应该要掌握好才对。

小编之前参加的笔试也遇到了手写排序算法的情况,关于冒泡排序可能基本都能写出来,但要是能把代码再优化一下,那就更好了,能给面试官留下更好的印象。

一般来说,两个for语句就好了:

面试官:连个冒泡排序都写不出来,你这五年都干些什么了?_第1张图片

这里涉及到一交换函数,交换函数有很多种写法,基本的写法:

面试官:连个冒泡排序都写不出来,你这五年都干些什么了?_第2张图片

有时候面试官会问,不用中间变量如何交换两个数。这时我们可以用位运算

面试官:连个冒泡排序都写不出来,你这五年都干些什么了?_第3张图片

当然一般来说,不建议这么做,还是建议用第一种方法,但要是面试官问到了,你要是能回答到这点,也是很不错。

细心的你应该会留意到,当我们需要排序的数组处于基本有序时,第一种做法还会做出很多不必要的查找判断,这样就会降低了代码的执行效率,那么可不可以优化一下呢,答案是肯定的,我们可以加个标识flag,用来判断本次排序中是否需要发生交换,如果没有发生交换,说明排序已经完成了,无需再做交换处理。

面试官:连个冒泡排序都写不出来,你这五年都干些什么了?_第4张图片

冒泡排序法基本来说还是挺不错的,数据规模不大时,还是推荐使用的,但相对于其他的排序算法(譬如快速排序)效率还是有些不足。

小编觉得,关于冒泡排序法还是挺重要,平时在学习中要注重基础。

不知对此你是怎么看待的,欢迎交流!

【END】


往期精选推荐



原来睡前玩手机就这么多不好,得知这几个危害后我默默地放下手机

男人在外越来越值钱,女人在家带小孩越来越不值钱?扎心了

月薪2W起的程序员做事细节曝光,终于知道了他们高薪的真相了

过“夫妻生活“到底是早上好还是晚上好?

你见过马化腾18年前编写的代码吗?

做好项目需求分析,才是项目管理的重中之重

一位工作8年程序员的成长感悟,值得深思

640?wx_fmt=jpeg

分享职场攻略、技术心得和创业资源

你可能感兴趣的:(面试官:连个冒泡排序都写不出来,你这五年都干些什么了?)