[Algorithm] Selection Sort


選択ソートは、ソートされていないデータの中で最も小さいデータを選択することによって、一番前から順番にソートするアルゴリズムです.
numsという名前のソートされていない数値配列を指定した場合は、選択ソートアルゴリズムを使用して昇順(1,2,3.10)でソートされた配列を返します.

💻 Selection Sort

const selectionSort = (nums) => {

  for(i=0; i<nums.length; i++) {
    
    let minIdx = i; // Minimum index를 칭하는 변수 minIdx 선언

    for(j=i+1; j<nums.length; j++) {
   //minIdx가 될 i를 기점으로 나머지 index들을 비교해야하기 때문에 또 한번의 for문을 돌며 이때 j는 i를 제외한 나머지 값들이 될 것이므로 i+1부터 시작하게됨
      if(nums[minIdx] > nums[j]) {
        minIdx = j
      } // nums[minIdx]를 가장 작은 수로 만들기 위해 minIdx와 j를 비교하며 바꿈
    }
    if( minIdx !== i) {
      let swap = nums[minIdx];
      nums[minIdx] = nums[i];
      nums[i] = swap
    }
       // minIdx와 i가 같지 않다면 nums[minIdx]를 하나의 변수로 선언하고 (swap)
       //nums[i]가  nums[minIdx]와 같도록 swap함
    
  }
  return nums
}

Sorting Algorithms_Sebastian De Lima

💡ソートのメリットとデメリットの選択


ソートを選択するのはソート方式で、前から順番にソートし、n個の要素に対してn個のメモリを使用するため、ソートの比較回数は多いが、交換回数はかなり少ないという利点がある.
最初のiから1 ~ n-1
2番目のiから2 ~ n-1
...n(n-1)/2、すなわちO(n2)の時間的複雑さがある.
これは、大量の交換が必要なリソース状態で使用できる最も効率的なソート方法です.
最適な資料状態は逆順序ソートです.(上記のように)
逆に、すでにソートされている場合に他の資料を追加するように並べ替えると、最悪の処理速度が表示されます.これは、データセットがソートされていても、アルゴリズムのすべての反復が完了したかどうかを判断できないためです.