冒泡排序在面试题中比较常见,今天我们就看哈它的原理及过程。
冒泡排序的实现原理:
假如我们有五个数,分别是,8,2,6,5,1。我们要进行从小到大排序,一般的话我们会用数组中的sort()方法,这里我们用冒泡排序实现它。
为什么叫冒泡排序,因为和水中冒泡的原理是一样的。小的会向上浮,大的会向下沉。
那么在排序中我们该如何运用呢?
假如它们是这样排列的:
8
2
6
5
1
首先我们用第一个数8和剩余的2,6,5,1进行比较,我们发现会比较4次。
第1次,8和2比较,谁大谁沉底,也就是交换值。
比较的结果是:
2
8
6
5
1
第2次,8和6比较,8大向下沉,交换位置
比较的结果:
2
6
8
5
1
第3次,8和5比较,8大继续向下沉,交换位置
比较结果如下:
2
6
5
8
1
第4次,8和1比较,8大沉到最低了
比较结果如下:
2
6
5
1
8
这是第一轮比较,我们第一轮比较并不能实现从小到大的排序。
所以我们还需要三轮比较,游戏规则和上面一样。
原理就是这样的。
我在这里附图片便于需要的人理解。
具体算法如下:
var arr = [44,15,21,11,31];
//console.log(arr.length); //5
function sortArr(arr){
for( var i = 0;i < arr.length; i++){
//console.log("i的值为:",i); // 0 1 2 3 4 5
for(var j = i+1 ;j < arr.length; j++){
//console.log("j的值为:",j);
if( arr[i] > arr[j]){
var temp = 0;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
console.log("冒泡完之后的数组:",arr);
}
sortArr(arr);