📖 WIPIVERSE

🔍 현재 등록된 정보: 21,099건

선택 정렬

선택 정렬(Selection Sort)은 자료 구조에서 사용되는 간단한 정렬 알고리즘이다. 이 알고리즘은 주어진 리스트에서 가장 작은(혹은 큰) 원소를 찾아 정렬되지 않은 부분의 맨 앞으로 이동시키는 과정을 반복하여 리스트 전체를 정렬한다. 비교적 구현이 간단하지만, 최악, 평균, 최선의 경우 모두 O(n²)의 시간 복잡도를 가지므로, 대량의 데이터를 정렬하는 데에는 적합하지 않다. 작은 규모의 데이터를 정렬하거나, 알고리즘의 개념을 이해하는 데에는 유용하게 사용될 수 있다. 공간 복잡도는 O(1)로, 별도의 메모리가 거의 필요하지 않다는 장점이 있다.

동작 방식:

선택 정렬은 다음과 같은 단계를 반복한다.

  1. 최솟값(혹은 최댓값) 찾기: 정렬되지 않은 부분에서 가장 작은(혹은 큰) 원소를 찾는다.
  2. 교환: 찾은 최솟값(혹은 최댓값)을 정렬되지 않은 부분의 첫 번째 원소와 교환한다.
  3. 반복: 정렬된 부분의 크기를 1 증가시키고, 나머지 정렬되지 않은 부분에 대해 1단계와 2단계를 반복한다. 정렬되지 않은 부분의 크기가 0이 될 때까지 이 과정을 계속한다.

장점:

  • 구현이 간단하다.
  • 공간 복잡도가 O(1)로 매우 효율적이다. 즉, 입력 데이터의 크기에 상관없이 사용하는 메모리 양이 일정하다.
  • 자료의 일부가 이미 정렬되어 있는 경우에도 효율적으로 동작한다. (비록 O(n²)의 시간 복잡도는 변하지 않지만, 불필요한 비교 연산이 줄어들 수 있다.)

단점:

  • 시간 복잡도가 O(n²)으로, 대량의 데이터에 대해서는 매우 느리다.
  • 입력 데이터의 크기에 따라 성능이 크게 저하된다.
  • 안정 정렬이 아니다. (즉, 값이 같은 원소들의 상대적 순서가 정렬 후에 바뀔 수 있다.)

응용:

선택 정렬은 알고리즘 교육 목적으로 주로 사용되며, 실제 대규모 데이터 정렬에는 거의 사용되지 않는다. 데이터의 크기가 작거나, 메모리 사용량을 최소화해야 하는 특수한 상황에서 제한적으로 사용될 수 있다.