[interview] 선택 정렬 알고리즘에 대해 설명해주세요

2025. 2. 17. 22:28·Develop Diary/Interview

선택 정렬 (Selection Sort) 알고리즘

● 배열에서 정렬되지 않은 부분의 최솟값, 최댓값을 찾아 순서대로 정렬된 부분의 뒤로 옮기는
   방식의 정렬 알고리즘입니다.

 

● 반복문을 사용하여 전체 배열을 순차적으로 정렬하기 때문에 시간 복잡도는
   BigO 기법으로 O(n^2)입니다.

 

선택 정렬 진행 순서

1) 초기화

 - 정렬되지 않은 배열 전체를 대상으로 탐색을 시작합니다.

  [2, 5, 4, 1, 3]

 

2) 최솟값(최댓값) 탐색

  - 배열의 시작 인덱스부터 끝까지 탐색하여 최솟값(최댓값)을 찾습니다.

  [2, 5, 4, 1, 3]

 

3) 스왑(Swap)

  - 찾은 최솟값을 현재 위치의 값과 교환합니다.

  [2, 5, 4, 1, 3] → [1, 5, 4, 2, 3]

 

4) 반복

  - 배열의 다음 요소부터 끝까지 동일한 과정을 반복하여 전체 배열이 정렬될 때까지
    진행합니다.

  [2, 5, 4, 1, 3] → [1, 5, 4, 2, 3] → [1, 2, 4, 5, 3] → [1, 2, 3, 5, 4] → [1, 2, 3, 4, 5]

 

● 정리하자면 
  - 정렬되지 않은 배열 전체를 대상으로 배열의 시작 인덱스부터 끝까지 탐색하여 최솟값(최댓값)
    을 찾고, 최솟값(최댓값)을 찾았을 경우 현재 위치의 값과 교환합니다. 이 과정을 반복하고 배열이
    정렬될 때가지 진행하는 정렬 알고리즘 입니다.

 

JavaScript로 표현해보자면

// 최솟값을 기준으로 정렬
function selectionSort(arr) {
  for (let i = 0; i < arr.length - 1; i++) {
    // 현재 위치에서 최소값의 인덱스를 설정합니다.
    let min = i;
    // i 이후의 요소들 중에서 최솟값을 찾습니다.
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[j] < arr[min]) {
        min = j;
      }
    }
    // 만약 최소값이 현재 위치가 아니면 교환합니다.
    if (min !== i) {
      const temp = arr[i];
      arr[i] = arr[min];
      arr[min] = temp;
    }
  }
  return arr;
}

// 예시 사용
const unsortedArray = [64, 25, 12, 22, 11];
const sortedArray = selectionSort(unsortedArray);
console.log(sortedArray); // 출력: [11, 12, 22, 25, 64]

 

효율적인 알고리즘인가요?

● 구현은 간단하지만 작은 데이터셋에서는 적합하지만, 대규모 데이터셋에서는 굳이 사용할 필요가 없습니다.

   선택 정렬 알고리즘보다 효율적인 다른 알고리즘이 더 많습니다.

 

● 하지만 가장 기본적인 정렬 알고리즘이기 때문에 '정렬은 이런 것이다' 를 이해하기에는 좋은 알고리즘입니다.

'Develop Diary > Interview' 카테고리의 다른 글

[Interview] 병합 정렬에 대해 설명해주세요  (0) 2025.02.19
[Interview] 버블 정렬에 대해 설명해주세요  (1) 2025.02.18
[Interview] var, let, const에 대해 설명해주세요  (0) 2025.02.13
[Interview] NoSQL이란 무엇인가요?  (0) 2025.02.12
[Interview] JWT에 대해 설명해주세요.  (1) 2025.02.07
'Develop Diary/Interview' 카테고리의 다른 글
  • [Interview] 병합 정렬에 대해 설명해주세요
  • [Interview] 버블 정렬에 대해 설명해주세요
  • [Interview] var, let, const에 대해 설명해주세요
  • [Interview] NoSQL이란 무엇인가요?
wakelight23
wakelight23
했던 공부를 기록하는 곳
  • wakelight23
    wakelight23 공부기록
    wakelight23
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Programming Language (26)
        • Error Note (1)
        • HTML, CSS (3)
        • Javascript 공부기록 (5)
        • SQL 문제풀이 (4)
      • Develop Diary (34)
        • Interview (20)
        • TheFourFs (13)
      • Project_xxx (18)
      • IT (32)
        • DB (0)
        • Hardware (3)
        • Network (10)
        • Server (11)
        • OS (4)
        • 게임수학 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    today i lerned
    today i leraned
    Today I learned
    weekly i learned
    today i learnd
    KPT회고
    Wil
    Til
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
wakelight23
[interview] 선택 정렬 알고리즘에 대해 설명해주세요
상단으로

티스토리툴바