uint32_t
merge(T* arr, T* temp, uint32_t left, uint32_t mid, uint32_t right) {
89uint32_t inv_count = 0;
91 while((i <= mid) && (j <= right)) {
92 if(arr[i] <= arr[j]) {
103temp[k++] = arr[i++];
106temp[k++] = arr[j++];
109 for(k = left; k <= right; k++) {
132uint32_t
mergeSort(T* arr, T* temp, uint32_t left, uint32_t right) {
133uint32_t mid = 0, inv_count = 0;
136mid = (right + left) / 2;
138inv_count +=
mergeSort(arr, temp, left, mid);
139inv_count +=
mergeSort(arr, temp, mid + 1, right);
142inv_count +=
merge(arr, temp, left, mid, right);
167temp.assign(size, 0);
168 return mergeSort(arr, temp.data(), 0, size - 1);
179void show(T* arr,
constuint32_t array_size) {
180std::cout <<
"Printing array: \n";
181 for(uint32_t i = 0; i < array_size; i++) {
182std::cout <<
" "<< arr[i];
196std::vector<uint64_t> arr1 = {
197100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84,
19883, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67,
19966, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50,
20049, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
20132, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
20215, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
203uint32_t size1 = arr1.size();
204uint32_t inv_count1 = 4950;
206assert(inv_count1 == result1);
208std::vector<int> arr2 = {22, 66, 75, 23, 11, 87, 2, 44, 98, 43};
209uint32_t size2 = arr2.size();
210uint32_t inv_count2 = 20;
212assert(inv_count2 == result2);
214std::vector<double> arr3 = {33.1, 45.2, 65.4, 76.5, 1.0,
2152.9, 5.4, 7.7, 88.9, 12.4};
216uint32_t size3 = arr3.size();
217uint32_t inv_count3 = 21;
219assert(inv_count3 == result3);
221std::vector<char> arr4 = {
'a',
'b',
'c',
'd',
'e'};
222uint32_t size4 = arr4.size();
223uint32_t inv_count4 = 0;
225assert(inv_count4 == result4);
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4