69,336
社区成员
发帖
与我相关
我的任务
分享
void recombine(int *part1, const int *part2, int len1, int len2) {
int pos1 = 0, pos2 = 0, pos = 0;
int *temp = (int *) malloc(sizeof(int) * (len1 + len2));
while (pos < len1 + len2) {
if (*(part1 + pos1) < *(part2 + pos2)) {
*(temp + pos) = *(part1 + pos1);
pos1++;
} else {
*(temp + pos) = *(part2 + pos2);
pos2++;
}
if (pos1 == len1) {
while (pos2 < len2) {
pos++;
*(temp + pos) = *(part2 + pos2);
pos2++;
}
break;
} else if (pos2 == len2) {
while (pos1 < len1) {
pos++;
*(temp + pos) = *(part1 + pos1);
pos1++;
}
break;
}
pos++;
}
for (int i = 0; i < len1 + len2; i++) {
*(part1 + i) = *(temp + i);
}
free(temp);
}