> For the complete documentation index, see [llms.txt](https://docs.sysout.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sysout.co.kr/base-language/java/beginner/array/sort.md).

# Sort

## 정렬(sort)

정렬은 데이터를 <mark style="color:red;">목적에 맞게 재배열</mark>하는 작업을 의미한다. 목적에 따라 데이터를 정렬하고 나면 정렬한 순서대로 데이터를 확인하며 원하는 처리를 수행할 수 있어 데이터가 많은 경우 반드시 필요한 내용 중 하나이다.

### 참고 사이트

정렬은 생각보다 복잡한 작업이기 때문에 시각화 사이트를 이용하면 일정 부분 도움을 받을 수 있다.

{% embed url="<https://www.toptal.com/developers/sorting-algorithms>" %}
자주 사용하는 정렬 방식들에 대한 비교 시각화 사이트
{% endembed %}

{% embed url="<https://visualgo.net/en/sorting>" %}
정렬의 진행 상황을 단계별로 시각화하는 사이트
{% endembed %}

### &#x20; 정렬의 종류

주요 정렬 방식의 종류는 다음과 같다.

* 선택 정렬(selection sort)
* 버블 정렬(bubble sort)
* 삽입 정렬(insertion sort)
* 쉘 정렬(shell sort)
* 병합 정렬(merge sort)
* 힙 정렬(heap sort)
* 퀵 정렬(quick sort)
* 퀵3 정렬(quick3 sort)

### 정렬 방식

&#x20;정렬은 데이터를 어떠한 순서로 나열하느냐에 따라 다음과 같이 구분한다.

* 오름차순(ASC, ascending) - 큰 데이터가 앞에 위치하도록 정렬<mark style="color:blue;">(인기순, 판매량순, 최신순 등)</mark>
* 내림차순(DESC, descending) - 작은 데이터가 앞에 위치하도록 정렬<mark style="color:blue;">(번호순, 이름순, Top10 등)</mark>
* 기타(커스텀) - 원하는 취지에 맞게 정렬
