Skip to content

Commit 8562f1b

Browse files
committed
improve Thread_MergeSort
1 parent f15a7d4 commit 8562f1b

File tree

2 files changed

+7
-12
lines changed

2 files changed

+7
-12
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.vscode
22
Algorithmic_Techniques/
3+
.cache

Sorting_Algorithms/src/9__Thread_MergeSort.cpp

+6-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "../include/Thread_MergeSort.h"
22

3+
// Merge two sorted halves
34
void merge(std::vector<int>& arr, int left, int mid, int right)
45
{
56
int n1 = mid - left + 1;
@@ -15,32 +16,25 @@ void merge(std::vector<int>& arr, int left, int mid, int right)
1516
{
1617
if (arr[leftIdx] <= arr[rightIdx])
1718
{
18-
merged.push_back(arr[leftIdx]);
19-
leftIdx++;
19+
merged.push_back(arr[leftIdx++]);
2020
}
2121
else
2222
{
23-
merged.push_back(arr[rightIdx]);
24-
rightIdx++;
23+
merged.push_back(arr[rightIdx++]);
2524
}
2625
}
2726

2827
while (leftIdx <= mid)
2928
{
30-
merged.push_back(arr[leftIdx]);
31-
leftIdx++;
29+
merged.push_back(arr[leftIdx++]);
3230
}
3331

3432
while (rightIdx <= right)
3533
{
36-
merged.push_back(arr[rightIdx]);
37-
rightIdx++;
34+
merged.push_back(arr[rightIdx++]);
3835
}
3936

40-
for (int i = left; i <= right; i++)
41-
{
42-
arr[i] = merged[i - left];
43-
}
37+
std::move(merged.begin(), merged.end(), arr.begin() + left);
4438
}
4539

4640
void mergeSort(std::vector<int>& arr, int left, int right, int depth)

0 commit comments

Comments
 (0)