活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
CSDN—21天学习挑战赛—【经典算法】
比较相邻的元素。如果第一个比第二个大,就交换他们两个。降序则相反,若第一个比第二个小,就调换位置
对每一对相邻元素作同样的工作,从开始到结尾。做完本次对比后,最后的元素会是最大的数。
然后又针对所有元素重复以上的步骤,除了最后一个(因为此时最后一个一定是最大数)。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

以arr=[6,1,5,2,4,3]为例子
[1,6,5,2,4,3] 6比1大,调换[1,5,6,2,4,3] 6比5大,调换[1,5,2,6,4,3] 6比2大,调换[1,5,2,4,6,3] 6比4大,调换[1,5,2,4,3,6] 6比3大,调换[1,5,2,4,3,6] 1比5小,不调换[1,2,5,4,3,6] 5比2大,调换[1,2,4,5,3,6] 5比4大,调换[1,2,4,3,5,6] 5比3大,调换[1,2,4,3,5,6] 1比2小,不调换[1,2,4,3,5,6] 2比4大,不调换[1,2,3,4,5,6] 4比3大,调换(虽然 前三位已经是升序了,但依然要对比,因为木有被检验过)
同理
同理
let arr=[6,1,5,2,4,3]
function bubbleSort(_arr){
//代表循环遍历次数
for(let i=0;i<_arr.length-1;i++){
//代表每次循环 对比的次数
for(let j=0;j<_arr.length-1-i;j++){
//将当前值 存起来
let temp = _arr[j]
//若 前一个数 小于 后一个数 则调换位置
if(_arr[j] > _arr[j+1]){
_arr[j] = _arr[j+1]
_arr[j+1] = temp
}
}
}
return _arr
}
console.log(bubbleSort(arr))