C++让用户输入一个数,用二分查找插入原有的有序数列并输出新的有序数列
时间: 2024-11-23 11:39:01 浏览: 8
在C++中,你可以通过以下步骤实现这个功能:
首先,你需要创建一个有序数列的容器,例如`std::vector<int>`。然后,提示用户输入一个整数,并使用二分查找算法(Binary Search)来确定该数字应该插入的位置。
以下是简单的示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 二分查找函数
int binarySearch(const vector<int>& arr, int target) {
int left = 0;
int right = arr.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target)
return mid; // 找到目标值,返回索引
else if (arr[mid] < target)
left = mid + 1;
else
right = mid - 1;
}
return left; // 如果目标值不存在于数组中,返回下一个位置
}
// 插入元素并保持有序
void insertAndSort(vector<int>& arr, int num) {
int index = binarySearch(arr, num);
arr.insert(arr.begin() + index, num); // 在找到的位置插入新数
}
int main() {
vector<int> sortedArray; // 初始化一个空的有序数组
cout << "请输入一个有序数组(按空格分隔): ";
for (string str; cin >> str; ) {
sortedArray.push_back(stoi(str)); // 将用户输入转换并添加到数组
}
int inputNum;
cout << "请输入一个需要插入的数: ";
cin >> inputNum;
insertAndSort(sortedArray, inputNum);
cout << "插入后的有序数组: ";
for (const auto& num : sortedArray) {
cout << num << ' ';
}
return 0;
}
```
在这个程序中,用户首先输入一个有序数列(以空格分隔),接着输入一个需要插入的新数。程序会使用二分查找定位插入位置,然后将新数插入到相应的位置,最后输出更新后的有序数组。
阅读全文