[JS]数値配列のソート

by mahny

HTML

<div>選択ソート</div>
<button onclick="sort(true)">昇順</button>
<button onclick="sort(false)">降順</button>

JavaScript

// 選択ソートサンプル(昇順)
// 最小の要素番号を配列から順次探して入れ替えていく

function generateDatas() {
  const result = [];
  for (let i = 0; i < 10; i++) {
  	result.push(Math.floor(Math.random() * 100));
  }
  return result;
}

function sort(isArc = true) {
  const datas = generateDatas();
  console.log('----- ソート前データ -----');
  console.log(datas);

  let len = datas.length;
  for (let i = 0; i < len - 1; i++) {
    let idx = i;

    // 配列中の最小値(または最大値)を探す
    if (isArc) {
      for (let j = idx + 1; j < len; j++) {
        if (datas[j] < datas[idx]) {
          idx = j;
        }
      }
    } else {
      for (let j = idx + 1; j < len; j++) {
        if (datas[idx] < datas[j]) {
          idx = j;
        }
      }
    }

    // 最後に入れ替え
    let tmpValue = datas[i];
    datas[i] = datas[idx];
    datas[idx] = tmpValue;
  }
  console.log('----- ソート後データ(' + (isArc ? '昇順' : '降順') + ') -----');
  console.log(datas);
}