冒泡的原理
先来看一张图片
所谓冒泡排序就是:
假设有一列数组,判断其中每个相邻元素的大小,一但发现第一个数比第二的数要大[默认从小到大排序],就交换两个元素的位置,一直把,数组中最大的元素放置在数组的最后面
// 假设的数组
var list = [5,2,1,7,5,3,9,2,7];
// 当元素一直比较到最后,发现自己已经是最后一个数了,后面已经没有元素和自己进行比较了,所以我 只需要比较 length-1 个即可
for(var i = 0; i<list.length-1; i++){
// 判断第一个元素是否比第二的元素大,如果大,则交换两个元素的位置
if(list[i] > list[i+1]){
// 声明一个临时变量,储存数组的第一个值
var tmp = list[i];
list[i] = list[i+1];
list[i+1] = tmp;
}
}
// 这段代码运行后,数组是这个样子的
// [2,1,5,5,3,7,2,7,9]
- 通过上面我们发现经过一轮循环后,数组中最大的元素,已经排序到最后面了
- 现在我们只需要,让上面的代码执行 多次既可以
- 所以我们这样做~~
for(var j = 0; j<list.lenth-1; j++){
// 每次比较完成后,数组的最后一个就不需要比较了
for(var i = 0; i<list.length-j-1; i++){
// 判断第一个元素是否比第二的元素大,如果大,则交换两个元素的位置
if(list[i] > list[i+1]){
// 声明一个临时变量,储存数组的第一个值
var tmp = list[i];
list[i] = list[i+1];
list[i+1] = tmp;
}
}
}
// 这段代码运行后,数组是这个样子了
// [1,2,2,3,5,5,7,7,9]