9.12编写一个程序,可以在命令行里接收用户输入的若干个字符串,将其按字典序排?

9.12编写一个程序,可以在命令行里接收用户输入的若干个字符串,将其按字典序排?,第1张

你好!下面是一个示例程序,可以在命令行里接收用户输入的若干个字符串,使用快速排序算法将其按字典序排列,并输出排序后的结果:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void quickSort(vector<string>& strs, int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
string pivot = strs[(i + j) / 2];
while (i <= j) {
while (strs[i] < pivot) {
i++;
}
while (strs[j] > pivot) {
j--;
}
if (i <= j) {
swap(strs[i], strs[j]);
i++;
j--;
}
}
quickSort(strs, left, j);
quickSort(strs, i, right);
}
int main() {
vector<string> strs;
string s;
do {
cin >> s;
if (s != "exit") {
strspush_back(s);
}
} while (s != "exit");
quickSort(strs, 0, strssize() - 1);
for (int i = 0; i < strssize(); i++) {
cout << strs[i] << endl;
}
return 0;
}
这个程序首先定义了一个字符串数组 strs 和一个临时字符串变量 s。程序使用 do-while 循环语句从键盘中接收输入的字符串,将这些字符串存储在 strs 数组中,直到用户输入 "exit" 为止。
然后,程序调用 quickSort() 函数对字符串数组 strs 进行排序。在 quickSort() 函数中,使用快速排序算法对字符串数组进行排序。快速排序是一种高效的排序算法,它的时间复杂度为 O(nlogn)。
最后,程序使用 for 循环语句遍历排序后的字符串数组,并输出排序结果。

完成这个程序,可以使用二维的字符数组,以及一个一维的指向字符的指针数组。先让指针数组每一个元素指向二维字符数组的每一个行的首地址,然后使用stricmp函数,来进行忽略大小写的字符串比较,并用它进行排序。这样就可以完成题目要求的功能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13399296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存