@@ -227,34 +227,36 @@ function merge($left, $right)
227227## 9. C++ 代码实现
228228
229229``` cpp
230- void merge (vector<int >& nums , int l, int mid, int r) {
230+ void merge (vector<int >& arr , int l, int mid, int r) {
231231 int index = 0;
232232 int ptrL = l;
233233 int ptrR = mid;
234234 static vector<int >tempary;
235- tempary.resize(nums.size());
235+ if (arr.size() > tempary.size()) {
236+ tempary.resize(arr.size());
237+ }
236238 while (ptrL != mid && ptrR != r) {
237- if (nums [ ptrL] < nums [ ptrR] ) {
238- tempary[ index++] = nums [ ptrL++] ;
239+ if (arr [ ptrL] < arr [ ptrR] ) {
240+ tempary[ index++] = arr [ ptrL++] ;
239241 } else {
240- tempary[ index++] = nums [ ptrR++] ;
242+ tempary[ index++] = arr [ ptrR++] ;
241243 }
242244 }
243245 while (ptrL != mid) {
244- tempary[ index++] = nums [ ptrL++] ;
246+ tempary[ index++] = arr [ ptrL++] ;
245247 }
246248 while (ptrR != r) {
247- tempary[ index++] = nums [ ptrR++] ;
249+ tempary[ index++] = arr [ ptrR++] ;
248250 }
249- copy(tempary.begin(), tempary.begin() + index, nums .begin() + l);
251+ copy(tempary.begin(), tempary.begin() + index, arr .begin() + l);
250252}
251- void mergeSort(vector<int >& nums , int l, int r) {// sort the range [ l, r), so if there is a 0-index array arr whose length is n
252- if (r - l <= 1) { //and you want sort the whole array, "mergeSort(arr, 0, n)" should be called
253+ void mergeSort(vector<int >& arr , int l, int r) { // sort the range [ l, r) in arr
254+ if (r - l <= 1) {
253255 return;
254256 }
255257 int mid = (l + r) / 2;
256- mergeSort(nums , l, mid);
257- mergeSort(nums , mid, r);
258- merge(nums , l, mid, r);
258+ mergeSort(arr , l, mid);
259+ mergeSort(arr , mid, r);
260+ merge(arr , l, mid, r);
259261}
260262```
0 commit comments