5장. 모자 없이 분류하기
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이 장에서는 배열의 N 값을 오름차순이 되도록 재배열하는 알고리즘을 소개합니다. 값 모음을 정렬된 순서로 구성하는 것은 많은 프로그램의 효율성을 향상시키기 위한 필수적인 첫 단계입니다. 정렬은 직원의 이름과 전화번호가 포함된 회사의 직원 명부를 인쇄하거나 공항 전광판에 항공편 출발 시간을 표시하는 등 많은 실제 애플리케이션에도 필요합니다.
정렬되지 않은 배열을 사용하면 최악의 경우 값을 검색하는 데 O(N)이 걸립니다. 배열이 정렬된 경우 이진 배열 검색은 최악의 경우 O(log N) 성능으로 대상 값을 찾을 수 있습니다.
스와핑을 통한 정렬
그림 5-1의 상단에 있는 배열( A)의 값을 정렬해 보세요. 연필을 사용하여 그림 5-1의 값을 종이에 복사해 보세요(또는 펜을 꺼내서 이 페이지에 그냥 써 보세요!). 배열에서 두 값의 위치를 반복적으로 바꾸어 오름차순으로 정렬해 보세요. 가장 적은 수의 스왑이 필요한 것은 무엇일까요? 또한 두 값을 서로 비교하는 횟수를 세어보세요. 저는 5번의 스왑으로 이 값들을 정렬했습니다. 더 적은 수를 사용할 수 있나요?1
그림 5-1. 샘플 배열, A, 정렬
스왑 횟수를 세는 것도 중요하지만, 두 값 사이의 비교 횟수도 세어야 합니다. 먼저 1장에서 설명한 것처럼 7번만 비교하면 A 에서 2가 가장 작은 값이라는 것을 알 수 있습니다. 가장 작은 값은 A[3] 에서 발견되므로 A[0] 으로 바꿉니다. 이렇게 하면 가장 작은 값이 배열의 앞쪽으로 이동합니다.