일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그래프
- binary search
- DP
- Dijkstra
- Two Points
- String
- 스토어드 프로시저
- Brute Force
- two pointer
- Stored Procedure
- 다익스트라
- SQL
- 이진탐색
- Trie
- MYSQL
- Hash
- union find
Archives
- Today
- Total
codingfarm
Merge Sort 본문
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include<iostream> using namespace std; class Node { public: int key, value; }; Node tmp[100]; void MergeSort(Node* arr, int start, int end) { if (start >= end) return; int mid = (end - start) / 2 + start; MergeSort(arr, start, mid); MergeSort(arr, mid + 1, end); //PartSort(arr, start, end, mid); int i = start, j = mid + 1; int index = start; while (i <= mid && j <= end) { if (arr[i].key < arr[j].key) tmp[index] = arr[i++]; else tmp[index] = arr[j++]; index++; } while (i <= mid) tmp[index++] = arr[i++]; while (j <= end) tmp[index++] = arr[j++]; for (int k = start; k <= end; k++) arr[k] = tmp[k]; } int main(void) { Node arr[10]; for (int i = 0; i < 10; i++) { arr[i].key = 9 - i; arr[i].value = 9 - i; } MergeSort(arr, 0, 9); cout << endl; return 0; } | cs |
'Algorithm & Data structure > 이론' 카테고리의 다른 글
MST(Minimum Spanning Tree) & Kruskal (0) | 2020.09.06 |
---|---|
Union Find (0) | 2020.09.06 |
list(static allocation) (0) | 2020.09.06 |
list(dynamic allocation) (0) | 2020.09.05 |
vector (0) | 2020.09.05 |
Comments