c++对n个等长的字符串排序
时间: 2023-10-10 08:11:35 浏览: 94
可以使用C++内置的sort函数来对字符串进行排序,以下是一个示例代码:
```c++
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
bool compare(string s1, string s2) {
return s1 < s2;
}
int main() {
int n;
cin >> n;
string arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
sort(arr, arr + n, compare);
for (int i = 0; i < n; i++) {
cout << arr[i] << endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个compare函数来比较两个字符串的大小关系,然后在主函数中先输入n个字符串,然后使用sort函数进行排序,最后输出排好序的字符串。
相关问题
c++对n个等长的字符串排序,不能用sort函数
可以使用冒泡排序对n个等长的字符串进行排序。冒泡排序的基本思想是,重复地走访过要排序的元素列,依次比较相邻两个元素的大小关系,如果它们的顺序错误就交换它们的位置,直到没有相邻元素需要比较为止。以下是一个示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
void bubbleSort(string arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
int main() {
int n;
cin >> n;
string arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
bubbleSort(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个bubbleSort函数来实现冒泡排序,然后在主函数中先输入n个字符串,然后调用bubbleSort函数进行排序,最后输出排好序的字符串。
C++不等长字符串排序
在C++中,标准库并没有提供直接支持不等长字符串排序的函数,因为C++的`std::string`类型默认是等长的,即所有的字符数组都有相同的长度。如果你需要对不等长字符串进行排序,通常会用到自定义比较函数或者使用一些第三方库,如`boost`中的`multi_index_container`。
一个常见的做法是定义一个结构体或类,其中包含一个字符串和其长度,然后使用这个复合类型的容器来进行排序。这里是一个简单的例子:
```cpp
#include <string>
#include <vector>
#include <algorithm>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/hashed_index.hpp>
// 定义一个结构体,包含字符串和长度
struct StringWithLength {
std::string str;
size_t length;
};
// 自定义比较函数,用于按长度排序
bool compareStringLength(const StringWithLength& a, const StringWithLength& b) {
return a.length < b.length;
}
int main() {
std::vector<StringWithLength> strings = {/*你的字符串列表*/};
// 使用boost的multi_index_container进行排序
boost::multi_index_container<StringWithLength,
boost::multi_index::indexed_by<boost::multi_index::ordered_unique<boost::multi_index::member<StringWithLength, size_t, &StringWithLength::length>>,
boost::multi_index::hashed_unique<boost::multi_index::tag<>, boost::multi_index::member<StringWithLength, std::string const&, &StringWithLength::str>>>>
my_string_list(strings);
std::sort(my_string_list.begin(), my_string_list.end(), compareStringLength);
// 现在我的_string_list已经是按长度升序排列的了
for (const auto& str : my_string_list) {
std::cout << str.str << " (" << str.length << ")\n";
}
return 0;
}
```
阅读全文