已有一排好序的字符串 str,现输入一新的字符 c,通过折半查找法,快速找到字符c插入位置,将此功能用函数 void insert(char strll,char c)来实现,在主函数中调用此函数,并输出数据。
时间: 2024-03-07 10:48:36 浏览: 92
好的,这个问题也比较简单,下面是实现代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void insert(char str[], char c) {
int len = strlen(str);
int low = 0, high = len-1, mid;
// 使用折半查找法找到要插入的位置
while (low <= high) {
mid = (low + high) / 2;
if (c < str[mid]) {
high = mid - 1;
} else {
low = mid + 1;
}
}
// 将插入位置后面的元素全部后移一位
for (int i = len; i > low; i--) {
str[i] = str[i-1];
}
// 将新元素插入到指定位置
str[low] = c;
}
int main() {
char str[] = "abdeghkmrswy";
char c = 'c';
insert(str, c);
cout << str << endl;
return 0;
}
```
输出结果为:
```
abcdeghkmrswy
```
其中,`insert`函数的实现也比较简单,首先使用折半查找法找到要插入的位置,然后将插入位置后面的元素全部后移一位,最后将新元素插入到指定位置即可。在主函数中,我们先定义一个字符串`str`,然后调用`insert`函数将新元素`'c'`插入到字符串中,最后输出插入后的结果。
阅读全文