冒泡排序算法如下:
1、先比较第一个元素和第二个元素,如果第一个元素大于第二个元素,那么就交换两个元素的位置。
2、再比较第二个元素和第三个元素,如果第二个元素大于第三个元素,那么就交换两个元素的位置。
3、以此类推,比完后最大的元素就移动到数组的最后位置
重复上述三步, 直到没有任何一对元素需要比较 ,就排好序了
举例说明:
从比较结果可以得出如下结论
代码实现:
var arr=[3,2,4,1];
// 外循环 轮数
for(var i=0; i<arr.length-1;i++){
//内循环 每轮次数
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){ // 交换两个数
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);
如果出现一轮比较并没有进行换位,说明该轮已经排好序,就没有必要进行下一轮的比较,则终止循环
var arr=[3,2,1,8,6];
//外循环 轮数
for(var i=0; i<arr.length-1;i++){
var isChang=false; //假定没有交换过
//内循环 每轮次数
for(var j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
isChang=true; // 交换过,值改为true
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
if(isChang==false){
break;
}
}
console.log(arr);