编辑代码

#include <iostream>
using namespace std;

bool merge(int arr[], int arrStart, int mid, int arrEnd){
    //分配临时数组存储数据
    int *temp = new int(arrEnd-arrStart);
    int i = arrStart;
    int j = arrEnd;
    int tempIndex = 0;
    while(i<mid && j<arrEnd){
        if(arr[i]>arr[j]){
            temp[tempIndex] = arr[j];
            j++;
        }else{
            temp[tempIndex] = arr[i];
            i++;
        }
    ++tempIndex;
    }
    //剩余数据
    while(i<mid){
        ++tempIndex;
        ++i;
    }
    while(i<arrEnd){
        ++tempIndex;
        ++j;
    }
    //将临时数组拷贝
    for(int k=arrStart; k<arrEnd; k++){
        arr[k] = temp[k-arrStart];
    }
    delete temp;
}
bool MergeSort(int arr[], int arrStart, int arrEnd){
    int len = arrEnd-arrStart;
    if (len == 1){
        return true;
    }
    int mid = arrStart + len/2;
    MergeSort(arr,arrStart,mid);
    MergeSort(arr,mid,arrEnd);

    return merge(arr,arrStart, mid, arrEnd);
    
}
void printArr(int arr[], int arrLen) {
    for (int i = 0; i < arrLen; ++i) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int main() {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
    int arr[] = {11,8,3,9,7,1,2,5} ;
    arrLen = sizeof(arr)/sizeof(int);

    printArr(arr, arrLen);
    MergeSort(arr, 0, arrLen);
    printArr(arr, arrLen);
    
	cout << "Hello world!    - cpp.jsrun.net." << endl;
	return 0;
}