|
发表于 2025-1-13 19:06:52
|
显示全部楼层
下面是用 C++ 实现的解决方案,功能是将整数 n 插入到一个已排序的数列中,并保持数列的升序排列:
C++ 实现代码:
cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n; // 输入需要插入的整数 n
cin >> m; // 输入数列的长度 m
vector<int> arr(m);
for (int i = 0; i < m; i++) {
cin >> arr[i]; // 输入数列中的 m 个整数
}
// 使用 lower_bound 找到插入位置
auto it = lower_bound(arr.begin(), arr.end(), n);
// 将 n 插入到找到的位置
arr.insert(it, n);
// 输出更新后的数列
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
说明:
输入:首先输入整数 n(需要插入的数),然后输入整数 m(数列的大小),最后输入数列中的 m 个整数。
插入操作:我们使用 lower_bound 来找到数列中第一个不小于 n 的位置,然后在该位置插入 n。
输出:将新的数列输出,每个元素之间以空格分隔。
关键点:
lower_bound(arr.begin(), arr.end(), n):这是一个 C++ STL 函数,它返回一个指针,指向数列中第一个不小于 n 的元素。如果所有元素都小于 n,返回 arr.end()。
arr.insert(it, n):在找到的位置 it 插入 n,并保持数列的顺序。
样例输入:
2
4
1 3 4 5
样例输出:
1 2 3 4 5
解析:
输入的数列是 [1, 3, 4, 5]。
需要将 2 插入到合适的位置,插入后的数列应为 [1, 2, 3, 4, 5],保持从小到大的顺序。 |
|