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

文章讲述了面试者张工在面试中因无法手写出冒泡排序算法而受到面试官质疑的故事,强调了基础算法在程序员职业发展中的重要性。冒泡排序的实现通常包括两层循环和交换函数,而优化版本则可通过添加标志位来提高效率。作者认为,尽管冒泡排序效率较低,但理解并掌握它是程序员基础能力的体现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

文|洪生鹏

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

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

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

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

640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

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

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

640?wx_fmt=png

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

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

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

【END】


往期精选推荐



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

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

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

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

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

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

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

640?wx_fmt=jpeg

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值