次要的思路其实就是从最右边开始,顺次比拟相邻两个元素的大小,若右边的数大于左边的数就进行替换,这样把所有的相邻元素都比拟一遍当前,最左边的数就是其中最大的数了。
紧接着又持续从最右边开始,顺次比拟各个相邻元素,并判断是否须要替换地位,但与第一遍不同的是,最左边的数不须要进行比拟,因为它曾经是最大的了。因而第二遍比拟完后从右往左数第二个数是其中第二大的数。
以此类推,就能将数据按从小到大的程序排好了
咱们来看一下如何封装冒泡排序的函数吧
function bubbleSort(arr) {if(!Array.isArray(arr)){return arr;}
let length = arr.length;
for(let i=length-1; i>0; i--) {for(let j=0; j<i; j++) {if(arr[j]>arr[j+1]){[arr[j], arr[j+1]] = [arr[j+1], arr[j]]
}
}
}
return arr;
}
console.log(bubbleSort([25,16,30,16,40,8]));
// [8, 16, 16, 25, 30, 40]