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;
}
相關文章
相關標籤/搜索