javascript中数组的冒泡排序

数组的冒泡排序
冒泡排序之所以叫冒泡排序,是因为使用这种算法进行排序的时候,数值会向气泡一样的从数组的一端漂浮到另一端。

假设正在将一组数字按照升序排列,较大的数会浮动到数组的右侧,而较小的值会浮动到数组的左侧。之所以产生这种现象是因为算法会多次在数组中移动,比较相邻的数据,而左侧值大于右侧值时将他们进行互换。

冒泡排序的核心思想是两两比较相邻的数,如果顺序相反则交换位置,直至没有顺序相反的为止。
例如 ; var arr = [4,3,2,1]

var arr = [4,3,2,1];
//第一轮比较 1) 4>3 交换位置 [3,4,2,1]
//			2) 4>2 交换位置 [3,2,4,1]
//			3) 4>1 交换位置 [3,2,1,4]
// 第一轮一共比较三次,最大的数到后面
//第二轮    1) 3>2 交换位置 [2,3,1,4]
//			2)3>1 交换位置  [2,1,3,4]
//3和4比较过了,所以第二轮不用再比较
//第二轮共比较两次 
//第三轮 1) 2>1 交换位置 [1,2,3,4]

总结规律:如果需要排序一个有4项数字的数组,则需要比较3轮,第一次对比3次,第二次对比2次,第三次对比1次

function sort(arr){
	for(var i = 0; i < arr.length; i++){
		for(var j = 0; j < arr.length-1-i;j++){
			if(arr[j]>arr[j+1]){
				var temp = arr[j + 1];
				arr[j+1] = arr[j];
				arr[j] = temp;
			}
		}
	}
	return arr;
}

冒泡排序的原理:

  1. 比较相邻的元素。如果第一个比第二个大,就交换位置
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。最后的元素应该会是最大的数
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

实现冒泡排序,每一次比较的次数是递减的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值