콘텐츠
목록에있는 항목 집합을 정렬하는 것은 프로그래밍에서 자주 발생하는 작업입니다. 종종 인간은이 작업을 직관적으로 수행 할 수 있습니다. 그러나 컴퓨터 프로그램은 명령을 완료하기 위해 정확한 명령 순서를 따라야하며이 순서를 알고리즘이라고합니다. 소팅 알고리즘은 혼란스러운 항목의 목록을 특정 순서로 배치하는 데 사용되는 방법입니다. 순서는 키에 의해 결정됩니다. 효율성과 성능면에서 다른 여러 가지 정렬 알고리즘이 있습니다. 이 유형에는 거품 정렬, 선택 정렬, 삽입 정렬 및 빠른 정렬이 있습니다.
알고리즘을 사용하여 많은 항목을 주문할 수 있습니다. (Thinkstock / Comstock / Getty 이미지)
버블 정렬
Bubble sort는 모든 항목 목록이 순서대로 정렬 될 때까지 순서가 맞지 않은 인접 요소를 반복적으로 바꿉니다. 이 방법으로 항목은 값에 따라 목록에서 변동하며 각 항목의 끝에서 끝나는 최대 값 (오름차순의 경우)입니다.
이 알고리즘의 주요 이점은 구현이 쉽고 익숙하다는 것입니다. 또한 버블 정렬에서 요소는 임시 저장소를 사용하지 않고 바뀌므로 공간 요구 사항이 최소화됩니다. 주요 단점은 목록에 많은 항목이 포함되어있을 때 좋은 결과를 보여주지 않는다는 것입니다. 이는 이러한 정렬 순서는 정렬 될 요소의 수 n마다 n2 개의 처리 단계가 필요하기 때문입니다. 따라서 버블 정렬은 학문적 교습을 위해 표시되지만 실생활 응용 프로그램에는 표시되지 않습니다.
선택 정렬
선택 정렬은 한 번에 하나의 항목을 선택하고 시퀀스의 올바른 위치에 배치하여 항목 목록을 반복적으로 탐색합니다.
선택 정렬의 가장 큰 장점은 작은 목록에서 잘 작동한다는 것입니다. 또한 장소 정렬 알고리즘이기 때문에 원래 목록을 저장하는 데 필요한 것 이상의 임시 저장소가 필요하지 않습니다. 가장 큰 단점은 큰 목록에서 효율이 낮다는 점입니다. 버블 정렬과 마찬가지로 n 개의 요소마다 n2 개의 단계가 필요합니다. 또한, 그 성능은 심사 과정 전에 항목의 초기 순서에 의해 쉽게 영향을받습니다. 이 때문에이 유형 선택은 소수의 요소가 무작위 순서 인 목록에만 적합합니다.
삽입 정렬
삽입 정렬은 목록을 반복적으로 정렬하며 매번 무질서한 시퀀스의 항목을 올바른 위치에 삽입합니다.
삽입 순서의 주된 장점은 단순성뿐 아니라 작은 목록에서도 우수한 성능을 보여주는 것입니다. 그것은 장소 주문 알고리즘이므로 공간 요구량은 최소화됩니다. 단점은 다른 정렬 알고리즘과 마찬가지로 성능이 좋지 않다는 것입니다. 작업에 필요한 n2 단계를 사용하면 삽입 목록이 큰 목록에서 제대로 작동하지 않습니다. 그러나 이는 특히 몇 가지 항목 목록에 유용합니다.
빠른 정렬
빠른 정렬은 분할 및 정복의 원리와 함께 작동합니다. 먼저, 항목 목록을 피벗 요소를 기반으로 두 개의 하위 목록으로 나눕니다. 첫 번째 하위 목록의 모든 요소는 피벗보다 작게 배열되지만 두 번째 하위 목록의 모든 요소는 피벗보다 더 크게 정렬됩니다. 동일한 분할 및 구성 프로세스가 전체 목록이 구성 될 때까지 결과 하위 목록에서 반복적으로 실행됩니다.
빠른 정렬은 많은 정렬 알고리즘으로 간주됩니다. 이는 큰 항목 목록에서 잘 작동하므로 효율성면에서 큰 이점이 있기 때문입니다. 현장에서 주문하면 추가 저장 공간이 필요 없습니다. 이것이 제시하는 약간의 단점은 최악의 성능이 위에서 설명한 다른 알고리즘의 평균 성능과 유사하다는 것입니다. 그러나이 최악의 경우는 매우 드뭅니다. 보다 일반적으로, 빠른 정렬은 모든 크기 목록을 구성하는 가장 효율적이고 널리 사용되는 방법을 생성합니다.