정렬이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 말한다. 프로그램에서 데이터를 가공할 때 오름차순이나 내림차순 등 대부분 어떤 식으로든 정렬해서 사용하는 경우가 많기에 정렬 알고리즘은 프로그램을 작성할 때 가장 많이 사용되는 알고리즘이다.
1)선택 정렬(Selection Sort)
가장 원시적인 방법'이다. 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정을 반복하는 정렬이다.
2)삽입 정렬(Insertion Sort)
특정한 데이터를 적절한 위치에 '삽입'하는 정렬이다. 삽입정렬은 특정한 데이터가 적절한 위치에 들어가기 이전에, 그 앞까지의 데이터는 이미 정렬되어 있다고 가정한다. 정렬되어 있는 데이터 리스트에서 적절한 위치를 찾은 뒤에, 그 위치에 삽입된다는 점이 특징이다.
3)퀵 정렬
정렬 알고리즘 중에서 가장 많이 사용되는 알고리즘이다. 퀵 정열은 기준을 설정한 다음 큰 수와 작은 수를 교환한 후 리스트를 반으로 나누는 방식으로 동작한다.
퀵 정렬에서는 피벗[Pivot]이 사용된다. 큰 숫자와 작은 숫자를 교환할 때, 교환하기 위한 '기준'을 바로 피벗이라고 표현한다. 퀵 정렬을 수행하기 전에는 피벗을 어떻게 설정할 것인지 미리 명시해야 한다. 피벗을 설정하고 리스트를 분할하는 방법에 따라서 여러 가지 방식으로 퀵 정렬을 구분한다.
4)계수 정렬(Count Sort)
계수 정렬 알고리즘은 특정한 조건이 부합할 때만 사용할 수 있지만 매우 빠른 정렬 알고리즘이다. 계수 정렬은, 먼저 가장 큰 데이터와 가장 작은 데이터의 범위가 모두 담길 수 있도록 하나의 리스트를 생성한다. 또다른 리스트에 각 데이터가 몇 번 등장했는지 그 횟수를 기록하고 그 횟수와 해당 데이터를 곱해준 것을 출력하는 방식이다.
'Algorithm' 카테고리의 다른 글
[프로그래머스] Lv2. 도넛과 막대 그래프 (0) | 2024.07.24 |
---|---|
[BOJ] 10872 팩토리얼 (C/C++) (0) | 2022.11.12 |
Depth-First Search/Breadth-First Search (0) | 2022.07.23 |
파라메트릭 서치(Parametric Search) (0) | 2022.07.20 |
그리디[Greedy] (0) | 2022.07.20 |