我刚刚完成了一些经典的分治算法的编码,我提出了以下问题:(更多出于好奇)
诚然,在很多情况下,分治算法比传统算法更快;例如,在快速傅里叶变换中,它将复杂度从 N^2 提高到 Nlog2N。但是通过编码,我发现,因为“划分”,我们有更多的子问题,这意味着我们必须创建更多的容器,并在子问题上额外分配更多的内存。想想看,在归并排序中,我们必须在每次递归中创建左右数组,而在快速傅里叶变换中,我们必须在每次递归中创建奇数和偶数数组。这意味着,我们必须在算法期间分配更多的内存。
所以,我的问题是,在现实中,比如在 C++ 中,当我们还必须增加内存分配的复杂性时,像分治法这样的算法真的会赢吗?(或者内存分配根本不需要运行时间,而且成本为零?)
谢谢你的协助!