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 | void MergeSort(unsigned int start, unsigned int middle, unsigned int end, int* src, int* dest) { unsigned int i = start, j = middle, k = start; while (i < middle && j < end) { if (src[i] < src[j]) { dest[k] = src[i]; i++; }else { dest[k] = src[j]; j++; } k++; } while (i < middle) dest[k++] = src[i++]; while (j < end) dest[k++] = src[j++]; } void Merge(unsigned int start, unsigned int end, int* src, int* dest) { if (start - end <= 0) return; unsigned int middle = (start + end) / 2; Merge(start, middle, src, dest); Merge(middle + 1, end, src, dest); MergeSort(start, middle, end, src, dest); } |
2019년 4월 13일 토요일
# 병합 정렬 ( Merge sort )
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기