1. Write the Insertion Sort as a function that takes an argument of a ”vector<string> reference“ representing an unsorted list of strings to turn it into a list of strings in an alphabetical order (20%). Test the function with a main function (5%). 用c++寫出,並且使用using namespace std; 要讓使用者能自行輸入文字,且使用者輸入次數為無限次,並且在讀是否回文時,不是直接讀,而是排成會是回文的方式讀
时间: 2024-02-20 18:00:21 浏览: 52
排序算法-基于C语言实现的排序算法之InsertionSort实现.zip
以下是使用 C++ 实现 Insertion Sort 的代码,其中包括了使用 `vector<string>` 实现对字符串的排序,并且使用 `using namespace std;` 简化了代码:
```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
void insertion_sort(vector<string>& v) {
for (int i = 1; i < v.size(); i++) {
string key = v[i];
int j = i - 1;
while (j >= 0 && v[j] > key) {
v[j + 1] = v[j];
j--;
}
v[j + 1] = key;
}
}
int main() {
vector<string> v;
string s;
while (true) {
cout << "Enter a string (or enter 'quit' to exit): ";
cin >> s;
if (s == "quit") {
break;
}
v.push_back(s);
}
insertion_sort(v);
cout << "Sorted list:" << endl;
for (string s : v) {
cout << s << " ";
}
cout << endl;
cout << "Palindrome list:" << endl;
int n = v.size();
for (int i = 0; i < n / 2; i++) {
cout << v[i] << v[n - i - 1] << " ";
}
if (n % 2 == 1) {
cout << v[n / 2];
}
cout << endl;
return 0;
}
```
这个程序首先定义了一个 `vector<string>` 类型的变量 `v`,用于存储用户输入的字符串。然后使用一个无限循环,让用户可以不断输入字符串,直到输入 `quit` 为止。每次用户输入一个字符串,程序都会将它加入到 `v` 中。
接下来,程序调用了 `insertion_sort` 函数对 `v` 中的字符串进行排序,并输出排好序的字符串列表。
最后,程序按照排好序的列表,将字符串排列成回文的方式输出。具体来说,程序首先计算列表的长度 `n`,然后从头到尾遍历列表的前一半元素,每次输出列表的第 `i` 个元素和第 `n-i-1` 个元素。如果列表的长度是奇数,那么程序还需要额外输出列表中间的那个元素。
阅读全文