js实现冒泡/选择/插入排序

116 阅读1分钟

冒泡排序

冒泡排序:相邻元素两两相比,每一次冒泡都可以找出最大/最小的元素。

const bubbleSort = (arr) => {
  for (let i = 0; i < arr.length; i++) {
    for(let j = 0; j < arr.length-1-i; j++) {
      if (arr[j] > arr[j+1]) {
        const temp = arr[j+1];
        arr[j+1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
}
console.log('冒泡排序',bubbleSort([1,9,2,6,4,8,2,6,1,7])); 
// [1, 1, 2, 2, 4, 6, 6, 7, 8, 9]

选择排序

选择排序:选择排序是每次会从未排序的区间中找到最小的元素,将其放到头部

const selectionSort = (arr) => {
  for (let i = 0; i < arr.length; i++) {
    for(let j = i+1; j < arr.length; j++) {
      if (arr[i] > arr[j]) {
        const temp = arr[j];
        arr[j] = arr[i];
        arr[i] = temp;
      }
    }
  }
  return arr;
}
console.log('选择排序',bubbleSort([1,9,2,6,4,8,2,6,1,7])); 
// [1, 1, 2, 2, 4, 6, 6, 7, 8, 9]

插入排序

插入排序:每次从未排序的区间拿出一个元素,在已排序区间找到合适的地方插入

const insertionSort = (arr) => {
  for (let i = 1; i < arr.length; i++) {
    for(let j = i; j > 0; j--) {
      if (arr[j] > arr[j-1]) {
        const temp = arr[j-1];
        arr[j-1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
}
console.log('插入排序',bubbleSort([1,9,2,6,4,8,2,6,1,7])); 
// [1, 1, 2, 2, 4, 6, 6, 7, 8, 9]