배열에서 최소값(혹은 최대값)을 반복적으로 찾아 정렬하는 알고리즘이다.

시간복잡도 최선, 평균, 최악 모두 $O(n^2)$에 해당하는 비효율적인 알고리즘이다. 정렬여부와 상관없이 모든 경우의 수를 전부 확인한다.

동작 방식은 3단계로 구성된다.

  1. 주어진 배열에서 최소값(혹은 최대값)을 찾는다.
  2. 최소값(최대값)을 맨앞의 값과 바꾼다
  3. 바꿔준 맨앞 (맨앞은 정렬된 상태이기 때문에)을 제외한 나머지 원소를 동일한 방법으로 바꿔준다.