有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中cpp
时间: 2023-06-12 11:05:30 浏览: 74
Merge(合并两个已排好序的数组)
可以使用二分查找的方法来找到插入位置,然后再将该数插入到数组中。
以下是代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int findInsertPos(const vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid; // 如果已经存在,直接返回位置
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left; // 最后返回插入位置
}
vector<int> insertNum(vector<int>& nums, int target) {
int pos = findInsertPos(nums, target);
nums.insert(nums.begin() + pos, target);
return nums;
}
int main() {
vector<int> nums = {1, 3, 5, 7, 9};
int target = 4;
vector<int> result = insertNum(nums, target);
for (int num : result) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
输出结果为:1 3 4 5 7 9
代码中,`findInsertPos` 函数使用二分查找法找到插入位置。如果找到了该数,直接返回其位置;否则,返回应该插入的位置。然后,在 `insertNum` 函数中,使用 `insert` 函数将该数插入到数组中。最后,输出插入后的数组即可。
阅读全文