算法基础(2)之简单排序

复杂度比较

冒泡排序

let arr = [3, 4, 5, 1, 9, 2, 7, 6];

function bubbleSort(arr) {
  let len = arr.length;

  while (len <= 1) {
    return arr;
  }

  for (let i = 0; i < len - 1; i++) {
    for (let j = 0; j < len - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j + 1];
        arr[j + 1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr
}

console.log(bubbleSort(arr)); // [ 1, 2, 3, 4, 5, 6, 7, 9 ]

选择排序

let arr = [8, 94, 15, 88, 55, 76, 21, 39];

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

console.log(selectSort(arr)); // [ 8, 15, 21, 39, 55, 76, 88, 94 ]

插入排序

let arr = [8, 94, 15, 88, 55, 76, 21, 39];

function insertSort(arr) {
  var len = arr.length;
  for (var i = 1; i < len; i++) {
    var temp = arr[i];
    var j = i - 1; //默认已排序的元素
    while (j >= 0 && arr[j] > temp) { //在已排序好的队列中从后向前扫描
      arr[j + 1] = arr[j]; //已排序的元素大于新元素,将该元素移到一下个位置
      j--; // 再比较前一个元素,判断是否还需要向前移动
    }
    arr[j + 1] = temp;
  }
  return arr
}

console.log(insertSort(arr));

猜你喜欢

转载自www.cnblogs.com/houfee/p/10621045.html