[Javascript選択Sort(選択ソート)実装コード

5645 ワード

選択ソート(Selection Sort)


これは、現在の値を現在の値以外の要素の最小値と比較して交換するソートです.
バブルソートが最大値を後ろに押す方法である場合、ソートを選択することは、最小値を前に押す方法です.
2つの隣接する要素のBubbleソート方式を比較するだけであれば.
選択ソートは、選択の最小値の後で比較されるため、選択ソートと名付けられます.

首都コード

1. 이중 반복문을 선언한다
  2. 첫 번째 반복문 : 현재값 i를 순회하는 반복문
  	2-1. 최소값의 인덱스를 담을 변수를 선언한다. 초기값은 현재값 i
  	3. 두 번째 반복문 : 비교값 j를 순회하는 반복문
  	  3-1. 최소값과 비교값을 비교한 후 더 작은 수의 인덱스를 최소값 변수에 할당한다
  4. 두 번째 반복문이 끝난 후 최소값의 인덱스와 i를 비교한다
  	4-1. 두 인덱스가 같지 않다면 스왑한다.
5. 정렬된 배열을 리턴한다.

コード実装

const arr = [1, 9, 8, 16, 5, 2, 7, 3];

// swap 헬퍼 함수
function swap(arr, i, j) {
  [arr[i], arr[j]] = [arr[j], arr[i]];
  return arr;
}

function selectionSort(arr) {
  for (let i = 0; i < arr.length; i++) {
    let minIndex = i;
    
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] > arr[j]) {
        minIndex = j;
      }
    } 
    if (i !== minIndex) swap(arr, i, minIndex);
  }
  return arr;
}

const result = selectionSort(arr);
console.log(arr); // [1, 2, 3, 5, 7, 8, 9, 16]