数组排序之冒泡排序: 重写冒泡排序
/**
*
*
* 外层循环outer:控制比较躺数;控制条件arr.length>=2;
* 内层循环inner:进行冒泡,每次冒泡,都将当前比较趟中的最大值,沉淀到最后:arr[outer-1];
* 内层循环每次从arr[0],开始向后比较,每一趟排序要比较次数outer-1;
* 如果arr[inner]>arr[inner+1];则进行交换位置;
使用ES6中的解构赋值:
交换位置
[arr[inner],arr[inner+1]]=[arr[inner+1],arr[inner]]
* [4,3,2,1]
* */
Array.prototype.bubbleSort=function(){
let arr=this,len=arr.length;
for(let outer=len;outer>=2;outer--){
for(let inner=0;inner<outer-1;inner++){
if(arr[inner]>arr[inner+1]){
[arr[inner+1],arr[inner]]=[arr[inner],arr[inner+1]]
}
}
}
return arr;
}
改进版本
// better version;
function bubbleSort(arr){
let low=0;
let heigh=arr.length-1;
let j=null;
while(low<heigh){
for(j=low;j<heigh;j++){
if(arr[j]>arr[j+1]){
[arr[j],arr[j+1]]=[arr[j+1],arr[j]]
}
}
--heigh;
for(j=height;j>low;j--){
if(arr[j]<arr[j-1]){
[arr[j],arr[j-1]]=[arr[j-1],arr[j]]
}
}
++low;
}
return arr;
}