티스토리 뷰
- Merge Sort
- 여러 부분 집합으로 분할하고, 정렬한 후, 병합하는 방식
- 종류
- 2-way: 2개의 정렬된 자료 집합을 하나의 집합으로 병합
- n-way: n개의 정렬된 자료 집합을 하나의 집합으로 병합
void merge(int arr[], int begin, int middle, int end) { int *sorted = new int[end - begin + 1]; int i = 0; int left = begin; int right = middle + 1; while(left <= middle && right <= end) { if(arr[left] < arr[right]) sorted[i++] = arr[left++]; else sorted[i++] = arr[right++]; } while(left <= middle) sorted[i++] = arr[left++]; while(right <= end) sorted[i++] = arr[right++]; for(i = 0; i <= end - begin; i++) arr[begin + i] = sorted[i]; delete sorted; } void sort(int arr[], int begin, int end) { if (end <= begin) return; int middle = (begin + end)/2; sort(arr, begin, middle); sort(arr, middle + 1, end); merge(arr, begin, middle, end); }
- RadixSort
- 원소의 키 값을 나타내는 인덱스를 이용한 정렬 방법. 정렬할 원소의 키 값에 해당하는 bucket에 원소를 분배하였다가 버킷의 순서대로 원소를 꺼내는 방법
class RadixSort { private: int length; vector<vector<int>> counter; public: RadixSort(int size) { length = size; counter.resize(10); } void sort(int arr[]) { int max = 0; for(int i = 0; i < length; i++) if(max < arr[i]) max = arr[i]; string maxstr = max+""; int max_digit = maxstr.length(); sort(arr, max_digit); } void sort(int arr[], int max_digit) { int mod = 10, div = 1; for(int i = 0; i < max_digit; i++, div *= 10, mod *= 10) { for(int j = 0; j < length; j++) { int bucket = arr[j] % mod / div; counter[bucket].push_back(arr[j]); } int pos = 0; for(vector<int> elem : counter){ for(int value : elem) arr[pos++] = value; } } } };
'알고리즘' 카테고리의 다른 글
[leetcode] Number of Good Paths (0) | 2023.01.15 |
---|---|
Sort - (2) Quick, Heap Sort (0) | 2021.12.22 |
Sort - (1) Bubble, Selection, Insertion, Shell (0) | 2021.12.22 |
Sort - Intro (0) | 2021.12.22 |
[코딩테스트 log]보석 쇼핑 (0) | 2021.07.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 실용주의
- Git
- gitignore
- ASCII
- 메모리 릭
- querydsl
- Java
- Generic
- sort algorithm
- Encoding
- WebClient
- annotation
- fetchResults
- 암호화
- ActiveAdmin
- point
- 코테 log
- 사고..
- SQL 전문가 가이드
- ruby
- IntelliJ
- 이펙티브자바
- 이벤트스토밍
- DesignSystem
- aws
- SHA
- effective-java
- Lombok
- TroubleShooting
- Spring-Boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함