分享职场程序员生活、职场攻略、领导同事相处技巧和创业资源
文|洪生鹏
面试时,排序算法经常会遇到。
张工毕业5年了,一直在做java开发,最近到某互联网公司面试,做了笔试题后,面试官看了觉得还不错,于是就让他手写冒泡选择排序法,张工写不出来,面试官直接怂了回去:毕业5你那了,连个冒泡排序都写不出来,你这五年都干些什么了。张工一脸的无助,不过确实不应该,类似冒泡排序这样基础的算法,平时应该要掌握好才对。
小编之前参加的笔试也遇到了手写排序算法的情况,关于冒泡排序可能基本都能写出来,但要是能把代码再优化一下,那就更好了,能给面试官留下更好的印象。
一般来说,两个for语句就好了:
这里涉及到一交换函数,交换函数有很多种写法,基本的写法:
有时候面试官会问,不用中间变量如何交换两个数。这时我们可以用位运算
当然一般来说,不建议这么做,还是建议用第一种方法,但要是面试官问到了,你要是能回答到这点,也是很不错。
细心的你应该会留意到,当我们需要排序的数组处于基本有序时,第一种做法还会做出很多不必要的查找判断,这样就会降低了代码的执行效率,那么可不可以优化一下呢,答案是肯定的,我们可以加个标识flag,用来判断本次排序中是否需要发生交换,如果没有发生交换,说明排序已经完成了,无需再做交换处理。
冒泡排序法基本来说还是挺不错的,数据规模不大时,还是推荐使用的,但相对于其他的排序算法(譬如快速排序)效率还是有些不足。
小编觉得,关于冒泡排序法还是挺重要,平时在学习中要注重基础。
不知对此你是怎么看待的,欢迎交流!
【END】
往期精选推荐
原来睡前玩手机就这么多不好,得知这几个危害后我默默地放下手机
分享职场攻略、技术心得和创业资源