记录一下使用 JavaScript 实现的冒泡排序算法,实际操作可查看 https://my-vue.liuxianyu.cn/bubble。
¶一、算法原理
- 1、比较两个相邻的元素,将值较大的元素交换到后面
- 2、每一对相邻元素都进行相同操作
- 3、针对所有的元素重复上述两步,除了最后一个元素
- 4、持续每次对越来越少的元素重复上述步骤,直到没有任何一对相邻元素需要比较
¶二、算法思路
依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面
- 第一次比较:首先比较第一个数和第二个数,将较小的数放在前面,较大的数放在后面;
- 第二次比较:比较第二个数和第三个数,将较小的数放在前面,较大的数放在后面;
- …
- 如此继续,直到比较到最后两个数,将较小的数放在前面,较大的数放在后面;
- 在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在第二趟比较时,最后一个数不参与比较;
- 在第二趟比较完成后,倒数第二个数也一定是数组倒数第二大数,所以在第三趟比较时,倒数第二个数不参与比较;
- 依次类推,每一趟比较次数依次减少
n 个数进行冒泡排序,总共要进行 n - 1 次排序,每趟进行 n - 1 次比较
¶三、算法描述
1 | // 冒泡排序 |
¶四、算法比较:
排序算法 | 平均时间复杂度 |
---|---|
冒泡排序 | O(n2) |
选择排序 | O(n2) |
插入排序 | O(n2) |
希尔排序 | O(n1.5) |
快速排序 | O(N*logN) |
归并排序 | O(N*logN) |
堆排序 | O(N*logN) |
基数排序 | O(d(n+r)) |