zlx362211854 / daily-study

每日一个知识点总结,以issue的形式体现
10 stars 6 forks source link

109. 冒泡排序 #165

Open goldEli opened 4 years ago

goldEli commented 4 years ago

介绍冒泡排序算法

goldEli commented 4 years ago
  1. 将第一个数依次与后面的数进行对比,遇到比自己小的就交换,所有数比完,第一个数最小,第一轮结束。
  2. 将第二个数也进行 和 1 同样的操作

...

...

...

  1. 直到循环到最后最后一个数,排序完成

bubble_sort

function sort(arr) {
    for (let i=0; i < arr.length; ++i) {
        for (let j = i; j < arr.length; ++j) {
            if (arr[j] < arr[i]) {
                let temp = arr[i]
                arr[i] = arr[j]
                arr[j] = temp
            }
        }
    }
    return arr
}
nanslee commented 4 years ago
let arr = [5, 3, 4, 2, 1];

const bubbleSort = arr => {
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length - i; j++) {
      if (arr[j] > arr[j + 1]) {
        [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
      }
    }
  }
  return arr;
}

console.log(bubbleSort(arr));   // [1, 2, 3, 4, 5]
zlx362211854 commented 4 years ago

冒泡就是用相邻元素比较,用[1, 3, 2, 5, 9, 6,4]来举例: 如果后面的元素比前面的元素小,就将大的和小的交换位置,这样比较一轮下来,最后面的数,肯定是最大的数,这样第二轮,就可以不比较最后一个数。


var arr = [1, 3, 2, 5, 9, 6, 4]
for (let a = 0; a < arr.length; a++) {
//不比较最后一个数,因为最后一个数肯定是最大的
  for (let i = 0; i < arr.length - a; i++) {
    if (arr[i] > arr[i + 1]) {
      var temp = arr[i+1]
       arr[i + 1] = arr[i]
      arr[i] = temp
    }
  }
}
// arr [1, 2, 3, 4, 5, 6, 9]