【21天学习挑战赛—经典算法】冒泡排序

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

CSDN—21天学习挑战赛—【经典算法】

学习专栏地址

经典算法_一头小山猪的博客-CSDN博客

文章

一文学懂经典算法系列之:冒泡排序)


冒泡排序

  • 依次比较相邻的元素,顺序错误就调换位置(根据升降序来判断顺序),
  • 一共遍历元素个数 - 1 次,每次遍历可减少一位元素的遍历

算法步骤(升序为例)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。降序则相反,若第一个比第二个小,就调换位置

对每一对相邻元素作同样的工作,从开始到结尾。做完本次对比后,最后的元素会是最大的数。

然后又针对所有元素重复以上的步骤,除了最后一个(因为此时最后一个一定是最大数)。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

示意图

实例步骤示意

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大,调换
第二次 :(对比④次)
  • 本次 无需遍历最后一个数 6 了
    [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大,调换
第三次 :(对比③次)
  • 本次 无需遍历最后一个数 6 了,和倒数第二个数了
    [1,2,4,3,5,6] 1比2小,不调换
    [1,2,4,3,5,6] 2比4大,不调换
    [1,2,3,4,5,6] 4比3大,调换

(虽然 前三位已经是升序了,但依然要对比,因为木有被检验过)

第四次 :(对比②次)

同理

第五次 :(对比①次)

同理

JS代码实现

  • 升序为例·
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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值