카테고리 없음
MergeSort 코드 NlogN
벤치마킹
2019. 6. 7. 14:25
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 | void MergeSort(Word arr[], int l, int r) { int li = l; //시작점 int half = (l + r) / 2; int ri = half + 1; // half +1 부터 시작 int idx = l; if (l == r) return; MergeSort(arr, l, half); MergeSort(arr, (l + r) / 2 + 1, r); while (li <= half && ri <= r){ if (WordCmp(arr[li], arr[ri]) >= 0) temp[idx++] = arr[li++]; else temp[idx++] = arr[ri++]; } while (li <= half) temp[idx++] = arr[li++]; while (ri <= r) temp[idx++] = arr[ri++]; //idx 는 l 부터 시작했으니 .결국 시작 포인트는 같게 된다. for (int i = l; i <= r; i++) { arr[i] = temp[i]; } } | cs |