JavaScript排序算法之--冒泡排序

冒泡排序

	var arr = [3,5,2,7,9,11,6];

首先需要了解两个数之间的换位
数组arr里面3和5之间的换位

	var temp = arr[0];
	arr[0] = arr[1];
	arr[1] = temp;

冒泡排序原理时两两比对

0 1 2 i
1 2 3 i+1
for(var i = 0 ; i < arr.length ; i ++){
	console.log(arr[i] ,arr[i+1]);
}

代码输出的是谁和谁比对

输出结果:
3 5
5 2
2 7
7 9
9 11
11 6
6 undefined

i最大下标是6有点多余了,会和undefined比对一次,没有必要,所以在arr.length-1

for(var i = 0 ; i < arr.length  - 1 ; i ++){
 console.log(arr[i] ,arr[i+1]);
}
输出:
3 5
5 2
2 7
7 9
9 11
11 6
for(var i = 0 ; i < arr.length - 1 ; i ++){
//arr[i] 前面;
//arr[i + 1] 后面
//如果前面的数比后面的数大,则互换位置
if( arr[i] > arr[ i + 1]){
		var temp = arr[i];
		arr[i] = arr[ i + 1 ];
		arr[i + 1] = temp;
}
console.log(arr);

操作前:

[3, 5, 2, 7, 9, 11, 6]

操作后:

[3, 2, 5, 7, 9, 6, 11]

可以看到,5和2的位置调换了
用for循环重复代码
找到第二大的数字放在第二个位置

for(var i = 0 ; i< arr.length-2 ; i ++){
	if( arr[i] > arr[ i + 1]){
		var temp = arr[i];
		arr[i] = arr[ i + 1 ];
		arr[i + 1] = temp;
	}
}
console.log(arr);

找到第三大的数字放在第三个位置

for(var i = 0 ; i< arr.length-2 ; i ++){
	if( arr[i] > arr[ i + 1]){
		var temp = arr[i];
		arr[i] = arr[ i + 1 ];
		arr[i + 1] = temp;
	}
}
console.log(arr);

执行总轮数 : 7 => 7 -1;

for(var k = 0 ; k <arr.length - 1 ; k ++){
	for(var i = 0 ; i< arr.length -1 -k ; i ++){
		if(arr[i] > arr[i + 1]){
			var temp = arr[i];
			arr[i] = arr[i + 1];
			arr[i + 1] = temp;
		}
	}
}
console.log(arr);

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值