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);

发布了5 篇原创文章 · 获赞 12 · 访问量 161

猜你喜欢

转载自blog.csdn.net/yu3278326/article/details/104618283
今日推荐