Javascript/알고리즘

[Javascript] 정렬(1) - 선택 정렬(sorting)

BeomBe 2023. 11. 27. 10:30
반응형

1. 선택정렬 (selection sort)

  • 매 단계에서 가장 작은 원소를 선택해서 앞으로 보내는 정렬 방법
  • 앞으로 보내진 원소는 더 이상 위치가 변경되지 않는다.
  • 시간 복잡도 O(N²)로 비효율적인 정렬 알고리즘 중 하나

 

1-1. 동작 방식

  • 각 단계에서 가장 작은 원소 선택
  • 현재까지 처리되지 않은 원소들 중 가장 앞의 원소와 위치를 교체

 

1-2 시간 복잡도

  • 매 단계에서 가장 작은것을 선택하는 데에 약 N번의 연산이 필요 (선형 탐색)
  • 결과적으로 약 N개의 단계를 거친다는 점에서 최악의 경우 O(N²)의 시간 복잡도를 가진다.

 

ex) 정렬할 배열

2 4 3 1 9 8 6 7 5

 

1단계

1 4 3 2 9 8 6 7 5

 

2단계

1 2 3 4 9 8 6 7 5

 

3단계

1 2 3 4 9 8 6 7 5

 

4단계

1 2 3 4 9 8 6 7 5

 

5단계

1 2 3 4 5 8 6 7 9

 

6단계

1 2 3 4 5 6 8 7 9

 

7단계

1 2 3 4 5 6 7 8 9

 

8단계

1 2 3 4 5 6 7 8 9

 

9단계

1 2 3 4 5 6 7 8 9

 

소스코드 예시

//선택정렬함수
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[minIndex] > arr[j]){
            	minIndex = j;
            }
        }
        //swap
        let temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

let check = [3, 6, 5, 8, 10, 2];

selectionSort(check);
console.log(check); // [2, 3, 5, 6, 8, 10]

 

 

반응형