본문 바로가기
자격증/정보처리기사

정렬

by 두두리안 2022. 6. 25.
728x90

목차

1.정렬(Sort)
2.선택 정렬(Selection Sort)
3.버블 정렬(Bubble Sort)
4.삽입 정렬(Insertion Sort)
5.쉘 정렬(Shell Sort)
6.힙 정렬(Heap Sort)
7.이진 병합 정렬(Binary Merge Sort)
8.버킷 정렬(Bucket Sort)
9.퀵 정렬(Quick Sort)

1.정렬(Sort)

1-1. 정렬의 개념

* 여러 자료를 일정한 규칙에 따라 키 값을 기준으로 나열하는 방법
* 정렬은 오름차순과 내림차순으로 구분되며 레코드 단위로 정렬된다
    - 오름차순: 키 값이 작은것부터 큰것 순으로 나열
    - 내림차순: 키 값이 큰것부터 작은것 순으로 나열
* 정렬은 키 값의 비교 방식에 따라 다양한 종류로 나뉜다

1-2. 정렬의 종류와 시간 복잡도

정렬 평균 최악
삽입정렬 O(n²) O(n²)
버블정렬 O(n²) O(n²)
선택정렬 O(n²) O(n²)
쉘 정렬 O(n¹⋅⁵) O(n¹⋅⁵)
힙 정렬 O(nlogn) O(nlogn)
이진병합정렬 O(nlogn) O(nlogn)
퀵 정렬 O(nlogn) O(n²)
버킷정렬 O(dn) O(dn)

2.선택 정렬(Selection Sort)

2-1. 선택 정렬의 개념

* 첫 위치와 나머지 위치들을 각각 비교하여 데이터를 교환하는 방식
* 모든 비교 및 교환을 통해 첫 데이터 위치에 가장 작은 값이 존재
* 정렬이 끝난 위치를 제외한 첫 위치와 나머지 위치들로 정렬작업을 반복한다
* 작업을 반복할때 마다 비교 시작 위치가 증가한다
* 시간 복잡도는 O(n²)

3.버블 정렬(Bubble Sort)

3-1. 버블 정렬의 개념

* 각 위치와 인접한 오른쪽 값과 비교하여 데이터를 교환하는 방식
* 모든 비교와 교환을 통해 마지막 위치에 가장 큰값이 존재하게 한다
* 정렬이 끝난 마지막 위치를 제외한 위치들의 데이터로 정렬 작업을 반복
* 작업을 반복할때 마다 비교 종료위치가 감소한다
* 시간 복잡도는 O(n²)

4.삽입 정렬(Insertion Sort)

4-1. 삽입 정렬의 개념

* 데이터들의 위치를 기준으로 좌측에 이미 정렬된 요소들과 비교하여 자신의 위치를 찾아 삽입하는 방식
* 좌측 데이터와 비교하며 진행되어야 하므로 두번째 위치부터 비교를 시작한다
* 삽입되는 위치 이후의 데이터들은 우측으로 밀려난다
* 시간 복잡도는 O(n²)

5.쉘 정렬(Shell Sort)

5-1. 쉘 정렬의 개념

* 삽입 정렬을 보완한 알고리즘
* 많은 양의 데이터의 간격을 정하고 간격을 점차 줄이면서 삽입정렬 진행
* 간격만큼 여러개의 부분 리스트를 생성하여 각각 삽입 정렬한다
* 부분 리스트를 점점 줄여서 최종적으로 하나의 리스트로 만들어 완성

6.힙 정렬(Heap Sort)

6-1. 힙 정렬의 개념

* 데이터 리스트를 완전이진트리 형태로 만들어 정렬하는 방법
* 하위노드그룹 으로부터 상위노드그룹 으로 점차 확대하는 방법
* 자식노드가 부모노드보다 큰 경우 자료를 교환
* 최대값, 최소값을 비교적 쉽게 추출할수 있는 방식

7.이진 병합 정렬(Binary Merge Sort)

7-1. 이진 병합 정렬의 개념

* 두개의 키 값을 한 쌍으로 하여 정렬하고, 정렬된 두 그룹을 다시 한쌍으로 하여 정렬하는 방식
* 각각의 그룹의 요소를 비교하여 작은 값을 우선 병합하여 정렬

8.버킷 정렬(Bucket Sort)

8-1. 버킷 정렬의 개념

* 정렬되지 않은 원소들의 범위를 균등하게 나눈 여러 버킷을 생성하여 정렬하는 방법
* 각각의 버킷은 스탟을 이용하여 정렬한다

9.퀵 정렬(Quick Sort)

9-1. 퀵 정렬의 개념

* 키 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽 서브 파일에 분해시키는 과정 반복하는 정렬
* 많은 자료 이동 없애고, 하나의 파일을 부분적으로 나누어 가며 정렬

참고자료 : 이기적 환상콤비 정보처리기사

728x90

'자격증 > 정보처리기사' 카테고리의 다른 글

인터페이스  (0) 2022.06.27
통합구현도구(IDE)  (0) 2022.06.27
탐색  (0) 2022.06.25
자료구조  (0) 2022.06.24
디자인 패턴  (0) 2022.06.24