归并排序c++代码-C++实现归并排序:递归 VS 迭代,谁更高效?

GK软件园

归并排序是一种经典的排序算法,通过不断地将待排序序列分割成小的子序列,然后再合并这些子序列,最终完成整个序列的排序。在C++中实现归并排序可以通过递归或迭代的方式来完成,下面我们来看一下递归方式的代码实现:

```cpp

#include

#include

void merge(std::vector& arr, int left, int mid, int right){

int n1 = mid - left +1;

int n2 = right - mid;

std::vectorL(n1),R(n2);

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]){

归并排序代码c语言_归并排序c++代码_c归并排序

arr[k]=L[i];

i++;

} else {

arr[k]=R[j];

j++;

}

k++;

}

归并排序c++代码_归并排序代码c语言_c归并排序

while (i< n1){

arr[k]=L[i];

i++;

k++;

}

while (j< n2){

arr[k]=R[j];

j++;

k++;

}

}

void mergeSort(std::vector& arr, int left, int right){

if (left < right){

int mid = left +(right - left)/2;

mergeSort(arr, left, mid);

mergeSort(arr, mid +1, right);

c归并排序_归并排序c++代码_归并排序代码c语言

merge(arr, left, mid, right);

}

}

int main(){

std::vector arr ={12, 11, 13,5,6,7};

mergeSort(arr,0, arr.size()-1);

for (int num : arr){

imtoken官网下载:https://jrxxgk.com/sjyx/17876.html