<aside> 📖 Contents

</aside>

⚫️ 요약 정리

데이터를 특정한 기준에 따라서 정렬하기 위해 사용하는 알고리즘이다. 대표적인 알고리즘들의 특징과 시간복잡도를 잘 알아두고 상황에 맞게 사용하자.

문제 상황에 따라 적절한 정렬알고리즘이 공식처럼 사용된다. 데이터의 개수가 적을때, 많지만 데이터의 범위가 한정적일때, 이미 데이터가 정렬되어있는 등 다양한 상황에서 적절한 알고리즘을 공식처럼 사용할 수 있도록 공부해보자.

이번 공부에서는 가장 많이 사용되는 ‘선택정렬’ , ‘삽입정렬’ , ‘퀵정렬’, ‘계수정렬’ 네 가지를 다룬다.

▪️ 시간복잡도

정렬 알고리즘 평균 시간복잡도 공간복잡도 특징
선택정렬 O(N^2) O(N) 아이디어가 매우 간단하다.
삽입정렬 O(N^2) O(N) 데이터가 거의 정렬되어 있을 때, 가장 빠르다.
퀵정렬 O(NlogN) O(N) 대부분의 경우에 가장 적합하고, 충분히 빠르다.
계수정렬 O(N+K)
(K는 데이터 중에서 가장 큰 수) O(N+K)
(K는 데이터 중에서 가장 큰 수) - 데이터의 크기가 한정되어있는 경우에만 사용이 가능하다.

▪️ 각 알고리즘 적용 아이디어

정렬 알고리즘 핵심 아이디어
선택정렬 가장 작은 데이터를 ‘선택’해서 정렬되지 않은 데이터중에 가장 앞쪽에 있는 데이터와 위치를 바꾸는 방법
삽입정렬 데이터를 앞에서부터 하나씩 확인하며 데이터를 적절한 위치에 ‘삽입’하는 방법
퀵정렬 기존 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방법
계수정렬 특정한 값을 가지는 데이터의 개수를 ‘카운트’하는 방법

⚫️ 선택정렬

처리되지 않은 데이터 중에서 가장 작은 데이터를 선택하고, 맨 앞에 있는 데이터와 바꾸는 것을 반복한다.

▪️ 핵심 동작 원리

1️⃣ 처리되지 않은 데이터 중 가장 작은 0 을 선택해서 가장 앞 7과 바꾼다.

Untitled

2️⃣ 처리되지 않은 데이터 중 가장 작은 데이터 1을 선택하고 가장 앞의 데이터 5랑 바꾼다.

Untitled

3️⃣ 처리되지 않은 데이터 중 가장 작은 2를 맨 앞 데이터 9랑 바꾼다.

Untitled