c++对n个等长的字符串排序
时间: 2023-10-10 10:11:35 浏览: 39
可以使用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函数进行排序,最后输出排好序的字符串。
用指针数组实现对n个字符串排序
要使用指针数组来对n个字符串进行排序,可以使用冒泡排序或者快速排序的算法来实现。以下是使用冒泡排序的示例:
首先,定义一个指针数组,数组中的每个元素都是字符串类型的指针。接下来,将每个字符串的地址存储在指针数组中。
然后,使用冒泡排序的算法对指针数组进行排序。冒泡排序的基本思想是比较相邻的两个元素,如果顺序错误,则交换它们的位置,直到整个数组排序完成。
冒泡排序的步骤如下:
1. 使用双重循环,外循环控制比较的轮数,内循环控制每一轮的比较次数。
2. 在内循环中,比较相邻的两个字符串的大小关系,如果顺序错误,则交换它们的位置。
3. 继续进行下一轮的比较,直到排序完成。
示例代码如下:
```c++
#include <iostream>
#include <cstring>
void bubbleSort(char** arr, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(arr[j], arr[j + 1]) > 0) {
char* temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int n;
std::cout << "请输入字符串的个数:";
std::cin >> n;
char** arr = new char*[n];
// 输入字符串
for (int i = 0; i < n; i++) {
char str[100];
std::cout << "请输入第" << i+1 << "个字符串:";
std::cin >> str;
arr[i] = new char[strlen(str) + 1];
strcpy(arr[i], str);
}
// 对字符串进行排序
bubbleSort(arr, n);
// 输出排序后的结果
std::cout << "排序后的字符串为:";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
// 释放内存
for (int i = 0; i < n; i++) {
delete[] arr[i];
}
delete[] arr;
return 0;
}
```
这是一个简单的示例代码,通过输入n个字符串,并使用冒泡排序对字符串进行排序,最后输出排序后的结果。使用指针数组可以有效地减少内存的使用,并对字符串进行排序。