c++ - Mergesort:动态分配大小仅在运行时已知的数组

标签 c++ sorting merge mergesort

我正在上算法课,并试图在 C++ 中实现合并排序。我试图存储左右子数组,但意识到我无法这样做,因为我无法在运行时初始化大小。有没有办法解决这个问题,或者我是否错误地进行了排序过程?我在下面列出了我所拥有的。

我也在努力避免 vector ,因为那太明显和容易了。

void merge(int *arr, int left, int mid, int right)
{
    int size1 = mid - left + 1;
    int size2 = right - mid;

    int leftArr[size1];
    int rightArr[size2];
    ....

}
void mergeSort(int *arr, int left, int right)
{
    if (left < right)
    {
        int mid = (left + right) / 2;
        mergeSort(arr, mid+1, right);
        mergeSort(arr, left, mid);
        merge(arr, left, mid, right);
    }
}

最佳答案

在我看来,使用 vector 会容易得多,这就是 C++。但是,如果您只是为了学习而这样做,那么您可以像建议的那样动态分配数组。

int *leftArr = new int[size1];
int *rightArr = new int[size2];

//do stuff

//don't forget to free your memory

delete [] leftArr;
delete [] rightArr;

关于c++ - Mergesort:动态分配大小仅在运行时已知的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373393/

相关文章:

c++ - x86 - 为什么编译器会在下一条指令中插入看似无意义的 JMP?

c++ - 用 boost.python 包装一个模板函数

sorting - Tapestry 网格默认排序

c# - 在 WPF DataGrid 中保留用户定义的排序顺序

c++ - 根据 size() 排序 vector

Python:合并嵌套列表

c++ - 为什么即使是 16 字节对齐的地址也会导致 _mm_load_si128 导致访问冲突?

c++ - 调用类属性的方法C++

r - 如何将列表添加到 R 中的数据框?

python - 使用 python 合并具有重复行的数据