【发布时间】:2021-01-02 06:21:56
【问题描述】:
对不起。我是这个论坛的新手,也是编程的新手。我看到一个问题 Merge without extra space 并尝试解决它。我没看过社论。我已经尝试为代码编写解决方案,但它似乎无法在线工作。虽然我尝试了一些我自己的测试用例,但它们似乎适用于我的原生 ide。我想知道我的代码是否正确,我想知道如何才能使它正确。
这是我的代码:
void merge(int arr1[], int arr2[], int n, int m) { // n is the size of arr1, m is size of arr2
int i=0;
while(i<n){
if (arr1[i]>arr2[0])
{
swap(arr1[i], arr2[0]);
}
for (int j=1; j<m; j++){
if (arr2[j-1]>arr2[j]){
swap(arr2[j-1], arr2[j]);
}
}
i++;
}
}
我希望空间复杂度为 O(1),预期时间复杂度为 O((n+m) log(n+m))。
【问题讨论】:
-
“但它似乎无法在线工作”这是什么意思?
-
你超时了吗?您的时间复杂度是 O(n*m),当 n 和 m 都可以为 10^9 时,这是不好的。
-
请显示minimal reproducible example,其中包含可编译代码、输入、预期输出和实际输出
-
只是对统一数组进行堆排序。
-
欢迎。这不是一个论坛。请花点时间阅读以下内容:stackoverflow.com/help/asking
标签: c++ arrays merge insertion-sort