ソートの選択


解答前の解答

function solution(unsorted) {
  function swap(former, latter) {
    const temp = unsorted[former];
    unsorted[former] = unsorted[latter];
    unsorted[latter] = temp;
  }
  for (let i = 0; i < unsorted.length; i++) {
    for (let j = i; j < unsorted.length; j++)
      if (unsorted[j] > unsorted[j + 1]) swap(j, j + 1);
  }
  return unsorted;
}

const result = solution([13, 5, 11, 7, 23, 15]);
console.log(result);
答えはBubbleソートに近いが、
  • 選択ソートではなく、不要な順序も含まれている.

    講義

    function solution(unsorted) {
      for (let i = 0; i < unsorted.length - 1; i++) {
        let min = unsorted[i];
        let indexToBeSwapped;
        for (let j = i + 1; j < unsorted.length; j++)
          if (min > unsorted[j]) {
            min = unsorted[j];
            indexToBeSwapped = j;
          }
        if (indexToBeSwapped)
          [unsorted[i], unsorted[indexToBeSwapped]] = [
            unsorted[indexToBeSwapped],
            unsorted[i],
          ];
        // swap 최신 문법;;
      }
      return unsorted;
    }
    
    const result = solution([13, 5, 11, 7, 23, 15]);
    console.log(result);
  • 以下の解答は、swap演算をより少なく実行し、論理もより明確である.