Skip to content

Commit 6773da4

Browse files
authored
Update 5.mergeSort.md
1 parent 3125abb commit 6773da4

File tree

1 file changed

+10
-41
lines changed

1 file changed

+10
-41
lines changed

5.mergeSort.md

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -226,16 +226,8 @@ function merge($left, $right)
226226

227227
## 9. C++ 代码实现
228228

229-
### 9.1 递归版
230-
231229
```cpp
232-
void mergeSort(vector<int>& nums, int l, int r) {
233-
if (r - l <= 1) {
234-
return;
235-
}
236-
int mid = (l + r) / 2;
237-
mergeSort(nums, l, mid);
238-
mergeSort(nums, mid, r);
230+
void merge(vector<int>& nums, int l, int mid, int r) {
239231
int index = 0;
240232
int ptrL = l;
241233
int ptrR = mid;
@@ -251,40 +243,17 @@ void mergeSort(vector<int>& nums, int l, int r) {
251243
tempary[index++] = nums[ptrL++];
252244
}
253245
while (ptrR != r) {
254-
tempary[index++] = nums[ptrR++];
246+
tempary[index++] = nums[ptrR++];
255247
}
256248
copy(tempary.begin(), tempary.begin() + index, nums.begin() + l);
257249
}
258-
```
259-
260-
### 9.2 迭代版
261-
262-
```cpp
263-
void mergeSort(vector<int>& nums) {
264-
for (int step = 1; step <= nums.size(); step *= 2) {
265-
for (int i = 0; i + step < nums.size(); i += 2 * step) {
266-
int l = i;
267-
int r = min((int)nums.size(), i + step * 2);
268-
int mid = i + step;
269-
int index = 0;
270-
int ptrL = l;
271-
int ptrR = mid;
272-
static vector<int>tempary(50000);
273-
while (ptrL != mid && ptrR != r) {
274-
if (nums[ptrL] < nums[ptrR]) {
275-
tempary[index++] = nums[ptrL++];
276-
} else {
277-
tempary[index++] = nums[ptrR++];
278-
}
279-
}
280-
while (ptrL != mid) {
281-
tempary[index++] = nums[ptrL++];
282-
}
283-
while (ptrR != r) {
284-
tempary[index++] = nums[ptrR++];
285-
}
286-
copy(tempary.begin(), tempary.begin() + index, nums.begin() + l);
287-
}
250+
void mergeSort(vector<int>& nums, int l, int r) {
251+
if (r - l <= 1) {
252+
return;
288253
}
254+
int mid = (l + r) / 2;
255+
mergeSort(nums, l, mid);
256+
mergeSort(nums, mid, r);
257+
merge(nums, l, mid, r);
289258
}
290-
```
259+
```

0 commit comments

Comments
 (0)