归并排序是一种经典的排序算法,通过不断地将待排序序列分割成小的子序列,然后再合并这些子序列,最终完成整个序列的排序。在C++中实现归并排序可以通过递归或迭代的方式来完成,下面我们来看一下递归方式的代码实现:
```cpp
#include
#include
void merge(std::vector
int n1 = mid - left +1;
int n2 = right - mid;
std::vector
for (int i =0; i < n1;i++){
L[i]= arr[left +i];
}
for (int j =0; j < n2;j++){
R[j]= arr[mid + 1 +j];
}
int i =0, j =0, k = left;
while (i< n1 && j < n2){
if (L[i]<=R[j]){
arr[k]=L[i];
i++;
} else {
arr[k]=R[j];
j++;
}
k++;
}
while (i< n1){
arr[k]=L[i];
i++;
k++;
}
while (j< n2){
arr[k]=R[j];
j++;
k++;
}
}
void mergeSort(std::vector
if (left < right){
int mid = left +(right - left)/2;
mergeSort(arr, left, mid);
mergeSort(arr, mid +1, right);
merge(arr, left, mid, right);
}
}
int main(){
std::vector
mergeSort(arr,0, arr.size()-1);
for (int num : arr){
imtoken官网下载:https://jrxxgk.com/sjyx/17876.html