js算法 冒泡排序和冒泡排序优化

冒泡(bubbling)排序是排序就基础的一种,作为前端开发也是必须掌握的,今天我们分析下什么是冒泡算法还有冒泡算法的优化

1、冒泡排序

冒泡排序顾名思义就是利用到气泡的原理,轻的气泡会浮起来,重的就会沉下去,通过两次的遍历,外层负责遍历数组,内层负责比较后更改顺序。通过比较相邻的两项,对于升序,前面大于后面,则换位置;如果是降序,前面小于后面则更换位置。我们通过一个动画就明白比较的顺序和流程。

这是一个图片的形式:
在这里插入图片描述
这是一个动画的形式:
在这里插入图片描述
我们看下算法的复杂度:

算法名称 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性
冒泡排序 O(n2) O(n2) O(n) O(1) 稳定

通过上面的两个媒介,我们大致可以了解冒泡了把,好不多说废话,上代码

var arr = [1, 2, 3, 45, 23, 28, 6]
for (var i = 0; i < arr.length - 1; i++) {
   
	for (var j = 0; j < arr.length - 1 - i; j++) {
   
		if (arr[j] > arr[j + 1]) {
     //前面>后面就是升序,反之降序
			arr[j] = arr[j] + arr[j + 1];
			arr[j + 1] = arr[j] - arr[j + 1];
			arr[j] = arr[j] - arr[j + 1];
		}
	}
}
console.log(arr)

当然实现两个值的交换也可以用其他的方法:点我

2、优化冒泡算法

就这个数值来说:[1, 2, 3, 45, 23, 28, 6]运行上面的排序得出的排序是这样的

var arr = [1, 2, 3, 45, 23, 28, 6]
for (var i = 0; i < arr.length - 1; i++) {
   
	for (var j = 0; j < arr.length - 1 - i; j++) {
   
		if (arr[j] > arr[j + 1]) {
   
			arr[j] = arr[j] + arr[j + 1];
			arr[j + 1] = arr[j] - arr[j + 1];
			arr[j] = arr[j] - arr[j + 1];
		}
	}
	//我们打印一下
	console.log( i+1 + "+&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值