用指针数组实现对n个字符串排序
时间: 2023-10-08 07:02:49 浏览: 118
用指针数组的方法将字符串排序
要使用指针数组来对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个字符串,并使用冒泡排序对字符串进行排序,最后输出排序后的结果。使用指针数组可以有效地减少内存的使用,并对字符串进行排序。
阅读全文