冒泡排序与选择排序的区别

核心逻辑

逐轮 “冒泡”:相邻元素两两比较,将

最大(小)元素逐步交换到末尾

逐轮 “选择”:先遍历找到本轮

最小(大)元素的位置

,仅一次交换到目标位置

交换次数

最坏情况

O(n2)

(完全逆序时,每轮多次交换)

固定

O(n)

(每轮仅 1 次交换,共 n-1 轮)

比较次数

最坏 / 平均

O(n2)

(可优化:某轮无交换则提前终止)

固定

O(n2)

(无论是否有序,都需遍历找最小元素)

数据移动特性

交换频繁,每次交换涉及 2 次数据移动(如 a↔b)

交换极少,仅最终一次移动目标元素

优化空间

可优化(提前终止、记录最后交换位置减少遍历范围)

优化空间小(仅可双路选择:同时找最大 + 最小)

实际执行效率

通常比选择排序慢

通常比冒泡排序快

全部评论

相关推荐

1.请做一下自我介绍。2.介绍一下你实习期间负责的小程序项目,它的业务逻辑和技术栈是什么?3.在实习项目中,你和后端、UI 是如何协作开发的?4.什么样的业务数据适合放在 Pinia 全局状态管理中?5.轮播图等数据做持久化存储后,如果后端更新了数据,前端如何保证数据的实时性?6.Vue3 的组合式 API(Ref/Reactive)和 Pinia 的区别是什么?各自的适用场景是什么?7.在开发小程序时,你遇到过哪些微信平台的限制或技术难点?8.小程序中点击分享生成带有二维码的海报图片,你是如何实现的?9.使用 Canvas 绘制图片时,如果图片资源跨域,该如何处理?10.你在项目中实现 CSS 主题切换的具体方案是什么?11.什么是小程序的分包?它的主包和分包体积限制是多少?12.如果主包体积超过限制,除了分包,还有哪些优化静态资源的方法?13.你在项目中封装过哪些高频业务组件?14.封装 Table 组件时,除了修改样式,你是如何考虑其通用性和逻辑复用的?15.如果要封装一个集成“搜索表单 + 数据表格 + 分页器”的大组件,你的设计思路是怎样的?16.在 Vue3 中,父子组件之间如何进行属性继承和事件通信?17.你觉得 Vue3 和 React 在开发体验和底层逻辑上有什么区别?18.你平时自学前端的路径是什么?主要参考哪些文档或社区资源?19.实习期间,如果遇到技术难题,你会通过哪些步骤去寻找解决方案?20.你计划的实习时长是多久?最快什么时候可以入职?
查看20道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务