已知BUF1中有N1个按从小到大的顺序排列的互不相等的无符号数,BUF2中有N2个从小到大的顺序排列的互不相等的无符号数。编写程序将BUF1和BUF2中的数合并到BUF3中,使在BUF3中存放的数互不相等且按从小到大的顺序排列
时间: 2023-06-15 09:06:19 浏览: 116
以下是C++代码实现:
```cpp
#include <iostream>
using namespace std;
void merge(unsigned int buf1[], int n1, unsigned int buf2[], int n2, unsigned int buf3[]) {
int i = 0, j = 0, k = 0;
while (i < n1 && j < n2) {
if (buf1[i] <= buf2[j]) {
buf3[k++] = buf1[i++];
} else {
buf3[k++] = buf2[j++];
}
}
while (i < n1) {
buf3[k++] = buf1[i++];
}
while (j < n2) {
buf3[k++] = buf2[j++];
}
}
int main() {
unsigned int buf1[] = {1, 3, 5, 7};
unsigned int buf2[] = {2, 4, 6, 8};
unsigned int buf3[8];
merge(buf1, 4, buf2, 4, buf3);
for (int i = 0; i < 8; i++) {
cout << buf3[i] << " ";
}
cout << endl;
return 0;
}
```
该程序定义了一个 `merge` 函数,它接受三个参数:`buf1`、`n1`、`buf2`、`n2`、`buf3`,分别表示输入的两个有序数组和输出的合并后的有序数组。函数内部使用双指针的方法,依次比较两个输入数组中的元素,将较小的元素存入输出数组中。最后,将剩余的元素依次存入输出数组中。
阅读全文