728x90
정렬
- 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것
- 정렬은 프로그램 작성시 빈번하게 필요
- 다양한 알고리즘이 고안되었으며, 알고리즘 학습의 필수
버블정렬 (Bubble sort)
- 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘
선택정렬 (Selection sort)
- 주어진 데이터 중, 최소값을 찾은뒤 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함, 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복하는 정렬 알고리즘
삽입정렬 (Insertion sort)
- 두번째 인덱스부터 시작하여, 해당 인덱스 앞에 있는 데이터(B) 부터 비교해서 key 값이 더 작으면, B값을 뒤 인덱스를 복사함, 이를 key 값이 더 큰 데이터를 만날때까지 반복, 그리고 큰 데이터를 만난 위치 바로 뒤에 key 값을 이동
병합정렬 (Merge sort)
- 재귀용법을 활용한 정렬 알고리즘
- 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈 뒤 각 부분 리스트를 재귀적으로 합병하여 정렬을 반복하여 다시 하나의 정렬 리스트로 만듬
퀵정렬 (Quick sort)
- 기준점 (Pivot)을 정해서, 기준점보다 작은 데이터는 왼쪽, 큰 데이터는 오른쪽으로 모으는 것을 반복하여 정렬
- 왼쪽 + 기준점 + 오른쪽
자바 정렬 함수
Primitive 원소 정렬 | Object 원소 정렬 | |
정렬방식 | Dual-Pivot Quick Sort | Tim Sort (선택정렬 / 합병정렬 합침) |
최선 시간복잡도 | O(N) | O(N) |
최악 시간복잡도 | O(N2) | O(NlogN) |
평균 시간복잡도 | O(NlogN) | O(NlogN) |
- 자바 Arrays.sort 함수는 Primitive 타입 정렬할때랑 Object 정렬할때 사용하는 정렬 알고리즘이 다름
'ALGORITHM & DATA STRUCTURE' 카테고리의 다른 글
[DATA STRUCTURE] RED BLACK TREE (0) | 2022.01.01 |
---|---|
[DATA STRUCTURE] 트리 (0) | 2021.11.08 |
[ALGORITHM] 다익스트라 알고리즘 (0) | 2021.09.23 |
[ALGORITHM] 순차탐색 / 이진탐색 (0) | 2021.09.21 |
[ALGORITHM] 재귀 호출 (0) | 2021.09.20 |