일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- quicksort
- Sprint Security
- UserDetails
- SpringBoot Initializr
- While
- jvm
- For
- zgc
- 기초
- JavaScript
- Java
- Fluent-bit
- datatype
- datastructure
- Spring Security
- If
- g1gc
- lambda
- Algorithm
- 자료형
- Kotlin
- MergeSort
- JPA
- ansible
- 연산자
- IAC
- programmers
- Class
- C++
- redis
- Today
- Total
목록MergeSort (2)
뭐라도 끄적이는 BLOG
먼저 QuickSort와 MergeSort중 어느것을 사용하는 것이 좋은가 에 대해서 명확한 해답은 내릴수 없다. 무조건 누가더 낫다라는 것보다 각각 어떤 상황에서 조금더 좋은 효율이 좋은지에 대해 생각해 봐야한다. Hybrid algorithm이 아닌 단순 Quick과 Merge만 비교해 본다. 배열에서 QuickSort와 MergeSort에서는 QuickSort가 좋다고 할 수 있다. 배열에서 MergeSort는 추가 공간을 사용하고 QuickSort는 Merge보다 적은 공간을 사용한다. 그리고 캐시 Locality(지역성)이 QuickSort가 더 좋다. QuickSort의 최악의 경우인 O(n^2)는 pivot의 설정으로 피할 수 있다. MergeSort는 대용량 데이터에 적합하다. QuickS..
MergeSort는 분할 정복 알고리즘 중 하나이다. 배열을 절반으로 나누는 MergeSort를 재귀적으로 불러 각 크기가 1이 될 때까지 나눈다. 나눈 것들을 다시 하나의 배열로 만들면서 정렬한다. Divide Combine MergeSort 과정 MergeSort C Code void merge(int* arr, int left, int mid, int right) { int i, j, k; int n1 = mid - left + 1; int n2 = right - mid; int *L, *R; L = malloc(sizeof(int) * n1); R = malloc(sizeof(int) * n2); for (i = 0; i < n1; i++) L[i] = arr[left + i]; for (j = ..