概念
工作原理
通过重复遍历要排序的数列,依次比较两个相邻的元素,如果发现他们的顺序"错误",就将他们交换过来,这个过程会重复进行,直到没有相邻的元素需要交换,就是该数列已经排序好了。
为什么叫冒泡排序
因为较小的元素会逐渐移动到数列顶端,较大的元素会下沉到底部。
如何实现
需要嵌套循环,外层控制排序的次数,内层负责每一次排序中比较和交换相邻的元素。当执行到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
}