冒泡排序的动画演示

    冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。

    冒泡排序的过程:冒泡排序就是每一轮循环是比较 index 与 index + 1 这两个元素,将较大的元素移去右边。一轮之后,由于最右边的元素已经是最大的了,所以下一轮就不用跟它对比了,下一轮循环的次数就减少一次。然后继续重复之前的步骤。

    冒泡排序 - 图1

    以下为冒泡排序的实现:

    1. /**
    2. * 数组中交换两个元素位置
    3. * @param {array} array
    4. * @param {number} leftIndex
    5. * @param {number} rightIndex
    6. */
    7. function swap(array, leftIndex, rightIndex) {
    8. let rightValue = array[rightIndex]
    9. array[rightIndex] = array[leftIndex]
    10. array[leftIndex] = rightValue
    11. }
    12. /**
    13. * 对数组进行冒泡排序
    14. * @param {array} arr
    15. */
    16. const bubble = (arr) => {
    17. for (let i = arr.length - 1; i > 0; i--) {
    18. for (let j = 0; j < i; j++) {
    19. if (arr[j] > arr[j+1]) swap(arr, j, j+1)
    20. }
    21. }
    22. return arr
    23. }

    最外面的循环用来控制要冒泡多少次,而里面的循环,用来控制冒泡的边界。

    时间复杂度: 冒泡排序 - 图2