编辑代码

#include <iostream>
using namespace std;

// arrEnd = arr.length 数组最后一个元素的下标加1
bool mergeSort(int arr[], int arrStart, int arrEnd){
    int arrLen = arrEnd - arrStart;

    if (arrLen == 1){
        return true;//说明数组只有一个元素,不需再排序
    }

    int mid = arrStart + arrLen/2;
    mergeSort(arr, arrStart, mid);
    mergeSort(arr, mid, arrEnd);

    return merge(arr, arrStart, mid, arrEnd);
}

bool merge(int arr[], int arrStart, int arrMiddle, int arrEnd){
    int arrLen = arrEnd - arrStart;


    if(arrLen < 2){
        return false;
    }

    int i = arrStart;
    int j = addMiddle;
    int *temp = new int(arrLen);
    int tempIndex = 0;

    while(i < arrMiddle && j < arrEnd){
        if(array[i] > array[j]){
            temp[tempIndex] = array[j];
            ++j;
        }else{
            temp[tempIndex] = array[i];
            ++i;
        }
    }

    // 数组剩余数据
    while(i < arrMiddle){
        temp[tempIndex++] = array[i++];
    }

    while (j < arrEnd){
        temp[tempIndex++] = array[j++];
    }

    // 把排好序的数据拷贝回去
    for ((tempIndex = 0, i = arrStart); (tempIndex < arrLen && i < arrEnd); (++tempIndex, ++i)){
        array[i] = temp[tempIndex];
    }

    delete []temp;
    temp = NULL;

    return true;
    
}

void printArray(int array[], int arrLen){
    for (int i = 0; i < arrLen; ++i){
        cout << array[i] << " ";
    }
    cout << endl;
}

int main() {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
	cout << "=========================" << endl;
	return 0;
}