IT/Algorithm

[Algorithm] 정렬

어린이개발자 2023. 5. 17. 13:54

정렬 알고리즘의 종류에 따라 개념 및 특징 정리를 하기 위해 글을 포스팅 한다.

1. 버블 정렬

- 인접한 개의 요소를 비교해 가면서 정렬을 진행하는 방식

- 장점) 구현이 매우 간단함

- 단점) 순서에 맞지 않는 요소들의 교환이 자주 일어남

- 시간 복잡도

  - 최악의 경우, O(n^2)

  - 평, O(n^2)
  - 최선의 경우, O(n)

 

2. 선택 정렬

- 전체 범위에서 차례대로 가장 작은 숫자를 탐색하고, 가장 왼쪽부터 차례대로 교환하는 방식

- 장점) 자료 이동 횟수가 미리 결정

- 단점) 값이 같은 요소가 있다면 상대적인 위치가 변경될 있음

- 시간 복잡도

  - 최악의 경우, 평균, 최선의 경우 모두 O(n^2)

 

3. 삽입 정렬

- 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입하는 방식

- 단점) 요소가 너무 많으면 비교적 많은 이동을 해야 하므로 성능이 좋지 않음

- 시간 복잡도

  - 최악의 경우, O(n^2)

  - 평, O(n^2)

  - 최선의 경우, O(n)

 

4. 병합 정렬

- '분할 정복이라는 알고리즘 디자인 기법에 근거하여 복잡한 문제를 복잡하지 않은 문제로 분할 하여 정복 하는 방식

- 병합 과정에서 정렬 발생

- 장점) 데이터 분포의 영향을 받음

- 단점) 요소를 배열로 구성하면, 임시 배열이 필요함

- 시간 복잡도

  - 최악의 경우, 평균, 최선의 경우 모두 O(nlogn)

 

5. 퀵 정렬

- 특정 요소를 기준점 (pivot) 으로 잡고 기준점보다 작은 요소는 왼쪽, 요소는 오른쪽으로 두고 왼쪽과 오른쪽을 각각 정복 하는 방식

- 장점) 평균 실행시간이 다른 알고리즘보다 빠른

- 단) pivot 따라 성능 차이가 심함

- 시간 복잡도

  - 최악의 경우, O(n^2)

  - 평, O(nlogn)

  - 최선의 경우, O(nlogn)

 

6. 힙 정렬

- '완전 이진 트리 최대 트리 또는 최소 트리를 구성해 정렬 하는 방식

- 전체 자료가 아닌 가장 개만 필요한 경우를 정렬할 유용

- 장점) 시간 복잡도가 좋은

- 시간 복잡도 

  - 최악의 경우, 평균, 최선의 경우 모두 O(nlogn)

 

7. 출처

https://www.youtube.com/watch?v=ww6URL1l1ho&list=WL&index=13 

[ 우아한 테크 - 10 테크톡, 마크의 정렬 알고리즘 ]