JavaScript冒泡排序算法

说明
时间复杂度指的是一个算法执行所耗费的时间
空间复杂度指运行完一个程序所需内存的大小
稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不稳定指,如果a=b,a在b的前面,排序后可能会交换位置

原理
依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。
时间复杂度,空间复杂度,稳定性
平均时间复杂度O(n*n)
最好情况O(n)
最差情况O(n*n)
空间复杂度O(1)
稳定性:稳定

冒泡排序源码:

// var bubbleArr = [1,3,44,5,9,15,22,20]
function random(min,max){
    //floor() 方法可对一个数进行下舍入
	return Math.floor(Math.random() * (max - min)) + min
}
var bubbleArr = [];
for(var i = 0; i< 50000; i++){
		bubbleArr.push(random(i,i+5))
}
console.log(bubbleArr)	
function bubbleSort(bubbleArr){
	var startTime = Date.parse(new Date());
	for(var i = 0; i < bubbleArr.length; i++){
		// 实现最后面的一个位最大数字(最后一个位数组的长度减去i)
		for(var j = 0; j < bubbleArr.length-1-i; j++){
			if(bubbleArr[j] > bubbleArr[j+1]){
				var temp = bubbleArr[j]
				bubbleArr[j] = bubbleArr[j+1];
				bubbleArr[j+1] = temp
			}
		}
		// 当i = 0 时,实现最后一个数字最大,为44;
		// 当i = 1 时,实现倒数第二个数位最大,为22 ,最后一个数已不再参与排序,
	}
	var endTime = Date.parse(new Date());
	console.log('开始时间(ms)' , startTime)
	console.log('结束时间' , endTime)
	console.log('花费的时间' , endTime - startTime)
	console.log(bubbleArr)
	
}
bubbleSort(bubbleArr)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值