image.png
主要的思路其实就是从最左边开始,依次比较相邻两个元素的大小,若左边的数大于右边的数就进行交换,这样把所有的相邻元素都比较一遍以后,最右边的数就是其中最大的数了。

紧接着又继续从最左边开始,依次比较各个相邻元素,并判断是否需要交换位置,但与第一遍不同的是,最右边的数不需要进行比较,因为它已经是最大的了。因此第二遍比较完后从右往左数第二个数是其中第二大的数。

以此类推,就能将数据按从小到大的顺序排好了

我们来看一下如何封装冒泡排序的函数吧

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]

node_bin
3 声望3 粉丝

写字楼里写字间,写字间中程序员;