ソートアルゴリズム


ソートアルゴリズム


昇順で並べられた実装コード

泡の位置合わせ


Bubbleソートは、1番目の資料と2番目の資料、2番目の資料と3番目の資料、3番目と4番目...このように(最後-1)2番目の資料と最後の資料を比較交換し、同時に資料をソートします.
第1ラウンドが完了すると、最大のデータは最後に移動するので、第2ラウンドでは、最後尾のデータはソートから除外され、第2ラウンドが完了すると、末尾から第2ラウンドまでのデータはソートから除外されます.これにより、ソートを1回行うたびに、ソートから除外されるデータが1つ増加します.
const bubbleSort = (array) => {
  for (let i = 0; i < array.length - 1; i++) {
    let swap;
    for (let j = i+1; j < array.length; j++) {
      if (array[i] > array[j]) {
        swap = array[i];
        array[i] = array[j];
        array[j] = swap;
      }
    }
  }  
  return array;
};

ソートの選択


選択ソートは、1番目のデータを2番目のデータから最後のデータまで順次比較し、最小の値を1番目のデータに配置し、2番目のデータを3番目のデータから最後のデータまで順次比較し、その中の最小の値を見つけ、2番目の位置に再配置するプロセスでソートします.
1ラウンド目では最小値のデータが一番前に表示されるので、2ラウンド目では2番目のデータを使用して比較します.同様に、第3ラウンドでは第3の資料をソートする.
const selectionSort = (nums) => {
  const length = nums.length;
  let minIndex, temp;

  for (let i = 0; i < length - 1; i++) {
    minIndex = i;

    for (let j = i + 1; j < length; j++) {
      if (nums[j] < nums[minIndex]) {
        minIndex = j;
      }
    }

    temp = nums[minIndex];
    nums[minIndex] = nums[i];
    nums[i] = temp;
  }
  return nums;
};

クイックソート


1つのリストをピボット(pivot)を基準に2つの不均一なサイズに分割し、分割された部分リストをソートし、2つのソートされた部分リストをマージしてリスト全体をソートする方法です.
const quickSort = (array) => {
  if (array.length < 2) return array;

  const pivot = array[0];
  const small = [];
  const big = [];

  for (let i = 1; i < array.length; i++) {
    if (array[i] <= pivot) {
      small.push(array[i]);
    } else {
      big.push(array[i]);
    }
  }

  return quickSort(small).concat(pivot, quickSort(big));
};
Reference
https://gmlwjd9405.github.io/tags#algorithm