冒泡算法
冒泡算法是一种比较简单好理解的算法,但是数据处理起来比较繁复,下面我们来整理一下吧。
先上代码为敬!
<script>
var array=[10,50,2,6,20];
var temp=array[0];
for(var i=0;i<=array.length-1;i++){
for(var j=0;j<=array.length-1-i;j++){
if(array[j]>array[j+1]){
var temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
console.log(array);
</script>
可以这样想:首先对于array=[10,50,2,6,20]数组里的10,50,2,6,20这几个数字,要对他们进行排序的话,我们怎么第一想法可能是找出最大的,排最后面;稍微第二大的,拍第二后面;但是对于计算机来说,他们可不知道哪个最大,他们只能是一个个遍历循环,进行比较才可以得出最大项。
大体算法步骤理解:
1、首先,第一次比较时,取数组中第一个数10与其他数进行比较,如果小于10,则交换位置,小的在前;如果大于10,不做改变,直到遍历完整个数组,总体一共会遍历array.length-1次(和除去自身之外的数字相比) 此时遍历完后,数组变为[2,50,6,10,20]
2、然后进行第二次比较,取数组第二个数50,又发生一次遍历。一共遍历array.length-1-1次(和除去自身以及上一次比较过的数之外的数字相比)
3、继续比较,直到比较array.length-1次
可以这样理解:
5 | 4 | 3 | 2 | 1 | ||
---|---|---|---|---|---|---|
第一次比较 | 4 | 3 | 2 | 1 | 5 | 比较length-1-0次 |
第二次比较 | 3 | 2 | 1 | 4 | 5 | 比较length-1-1次 |
第三次比较 | 2 | 1 | 3 | 4 | 5 | 比较length-1-2次 |
第四次比较 | 1 | 2 | 3 | 4 | 5 | 比较length-1-3次 |
可以想象是二维的x y轴,x轴(横向)方向是数组内部循环遍历,y轴(纵向)用来计次数