JS十大经典排序排序算法

1.冒泡排序

冒泡排序一般排在第一位,说明它是排序算法的入门算法,是最简单的一个排序算法,并且必须掌握和理解。算法

先来看看代码吧:数组

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

以上作了两层循环,第二层循环是第一个项和第二个项对比,若是第二个大于第一个,就交换他们的位置,那么大的数就在右边。进入下一次循环,第二个和第三个对比,大的移动到右边,以此类推,最大的数会交换到最右边。也就是说第二层循环的目的是找出最大值,冒泡到最右边。spa

第一层循环目的是要循环arr.length遍,第一遍是找出数组第一大的数,排到最右边,第二遍是找出第二大的(由于已经找出第一大的,因此是j < len - 1 -i), 继续循环找到次大的书,循环arr.length编,就从右向左依次递减,排序完成。code

若是是倒序排列,第二层循环方向,每次找出最小值,冒泡到左边。blog

2.选择排序

function selectionSort(arr) {
  let temp;
  let minIndex;
  for (let i = 0, len = arr.length; i < len - 1; i++) {
    minIndex = i;
    for (let j = i; j < len; j++) {
      if (arr[j] < arr[minIndex]) {
        minIndex = j;
      }
    }
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
  }
  return arr;
}
相关文章
相关标签/搜索