JavaScript 之冒泡排序
冒泡排序,是一个相对较为简单易于理解的排序算法。下面以升序为例。
原理
- 比较相邻的两个元素a、b。若 a > b,则互换 a 与 b 的位置,否则不变。
- 按照上面的规则,第一轮循环次数为
array.length - 1
,一轮循环结束,数组最后一项应该是最大数。 - 第二轮开始,循环次数为
array.length - 1 - 1
,同样把本次循环的最大项互换到array[length - 1 - 1]
的位置上。 - 以此类推...
图示
实现
// 冒泡排序(升序) function bubbleSort(arr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { ;[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]] } } } return arr } const array = [8, 12, 4, 0, 22, 8, 21, 3, 56] console.log(bubbleSort(array)) // [0, 3, 4, 8, 8, 12, 21, 22, 56]
时间复杂度
可知冒泡排序执行次数是 (n-1) + (n-2) + ... + 2 + 1
= (n^2 - n)/2
,根据 时间复杂度推导方式,可得到 O(n^2)
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论