5.3 선택 정렬의 효율성

    선택 정렬은 비교와 교환, 두 종류의 단계를 포함한다. 즉, 각 패스스루 내에서 각 값을 현재까지 찾은 최솟값과 비교하고, 최솟값을 올바른 위치에 있는 수와 교환한다.

    5개의 원소를 포함하는 배열 예제로 돌아가면, 총 10번의 비교를 해야 했다. 다음 표처럼 나눠서 살펴보자.

    ▼ 표 5-1

    패스스루 번호

    비교 횟수

    1

    4번

    2

    3번

    3

    2번

    4

    1번

    총 4 + 3 + 2 + 1 = 10번의 비교다.

    모든 배열 크기에 적용되도록 표현하면 원소 N개가 있을 때 (N - 1) + (N - 2) + (N - 3) … + 1번의 비교다.

    이와 달리 교환은 한 패스스루 당 최대 한 번 일어난다. 각 패스스루마다 최솟값이 이미 올바른 위치에 있느냐에 따라 교환을 안 하거나 교환을 한 번 하기 때문이다. 배열이 역순으로 정렬된 최악의 시나리오에서는 버블 정렬과 달리 비교할 때마다 빠짐없이 교환을 한 번 해야 한다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.