每天一个小算法-冒泡排序

17 阅读1分钟

概念

工作原理

通过重复遍历要排序的数列,依次比较两个相邻的元素,如果发现他们的顺序"错误",就将他们交换过来,这个过程会重复进行,直到没有相邻的元素需要交换,就是该数列已经排序好了。

为什么叫冒泡排序

因为较小的元素会逐渐移动到数列顶端,较大的元素会下沉到底部。

如何实现

需要嵌套循环,外层控制排序的次数,内层负责每一次排序中比较和交换相邻的元素。当执行到n-1趟的时候,只有最前面的两个元素需要比较,因此此时序列中最大的元素已经排在了正确的位置上。

是否是稳定的算法

冒泡是一种交换排序,在执行过程中会大量的进行交换,由于相等的元素在排序的时候不会改变位置,所以冒泡排序也是一种稳定的排序算法。

时间复杂度

O(n^2)

代码实现


const bubbleSort = (dataArray = []) => {
    const length = dataArray.length
    dataArray.forEach((x, xIndex) => {  //外部循环控制排序次数
        dataArray.forEach((y, yIndex) => {  // 内部循环进行比较和交换
            if(dataArray[yIndex] > dataArray[yIndex+1]) { //判断:如果当前元素大于下一个元素的情况
                const temp = dataArray[yIndex]  // 创建临时变量存储当前元素
                dataArray[yIndex] = dataArray[yIndex+1] //进行位置交换
                dataArray[yIndex+1] = temp
            }
        })
    })
    console.log(dataArray, 'dataArray')
    return dataArray
}