35
35
36
36
![ 动图演示] ( res/mergeSort.gif )
37
37
38
+ ## 4. C++代码实现
38
39
39
- ## 4. JavaScript 代码实现
40
+ ``` cpp
41
+ void merge (vector<int > vec, vector<int >::iterator start, vector<int >::iterator mid, vector<int >::iterator end, vector<int > result)
42
+ {
43
+ int i = 0;
44
+ auto leftStart = start;
45
+ auto rightStart = mid + 1;
46
+ while (leftStart <= mid && rightStart <= end)
47
+ {
48
+ if (* leftStart < * rightStart)
49
+ result[ i++] = * (leftStart++);
50
+ else
51
+ result[ i++] = * (rightStart++);
52
+ }
53
+ while (leftStart <= mid)
54
+ {
55
+ result[ i++] = * (leftStart++);
56
+ }
57
+ while (rightStart <= end)
58
+ {
59
+ result[ i++] = * (rightStart++);
60
+ }
61
+
62
+ for (int j=0;j<i;j++)
63
+ {
64
+ cout << ",i=" << i << ",j=" << j << endl;
65
+ *(start++) = result[j];
66
+ cout << *(start - 1) << endl;
67
+ }
68
+ }
69
+ void mergeSortA(vector<int > vec, vector<int >::iterator start, vector<int >::iterator end, vector<int > result)
70
+ {
71
+ int mid = 0;
72
+ if (end > start)
73
+ {
74
+ mid = (end - start ) / 2;
75
+ //左边排序
76
+ mergeSortA(vec, start, start + mid, result);
77
+ //右边排序
78
+ mergeSortA(vec, start + mid + 1, end, result);
79
+ //合并
80
+ merge(vec, start, start+mid, end, result);
81
+ }
82
+ }
83
+
84
+ vector<int > AlgorithmSort::mergeSort(vector<int > vec)
85
+ {
86
+ int len = vec.size();
87
+ //边界值判定
88
+ if (len <= 1)
89
+ return vec;
90
+
91
+ vector<int> result(len);
92
+ /*
93
+ 左边与右边排序,再做归并
94
+ */
95
+ mergeSortA(vec, vec.begin(), vec.end()-1, result);
96
+
97
+ return vec;
98
+ }
99
+
100
+ ```
101
+
102
+ ## 5. JavaScript 代码实现
40
103
41
104
```js
42
105
function mergeSort(arr) { // 采用自上而下的递归方法
@@ -72,7 +135,7 @@ function merge(left, right)
72
135
}
73
136
```
74
137
75
- ## 5 . Python 代码实现
138
+ ## 6 . Python 代码实现
76
139
77
140
``` python
78
141
def mergeSort (arr ):
@@ -97,7 +160,7 @@ def merge(left,right):
97
160
return result
98
161
```
99
162
100
- ## 6 . Go 代码实现
163
+ ## 7 . Go 代码实现
101
164
102
165
``` go
103
166
func mergeSort (arr []int ) []int {
@@ -137,7 +200,7 @@ func merge(left []int, right []int) []int {
137
200
}
138
201
```
139
202
140
- ## 7 . Java 代码实现
203
+ ## 8 . Java 代码实现
141
204
142
205
``` java
143
206
public class MergeSort implements IArraySort {
@@ -187,7 +250,7 @@ public class MergeSort implements IArraySort {
187
250
}
188
251
```
189
252
190
- ## 8 . PHP 代码实现
253
+ ## 9 . PHP 代码实现
191
254
192
255
``` php
193
256
function mergeSort($arr)
0 commit comments