用字符指针数组,将给定的5个字符串(可以是任意5个国家名字)进行排序并输出。
时间: 2023-04-24 15:02:22 浏览: 55
可以使用冒泡排序或快速排序等算法对字符指针数组进行排序,具体实现如下:
1. 定义一个字符指针数组,存储5个字符串。
2. 使用冒泡排序或快速排序等算法对字符指针数组进行排序。
3. 输出排序后的字符指针数组。
示例代码如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 20
void bubble_sort(char *arr[], int n);
void quick_sort(char *arr[], int left, int right);
int partition(char *arr[], int left, int right);
int main()
{
char *countries[] = {"China", "USA", "Japan", "Germany", "France"};
int n = sizeof(countries) / sizeof(char *);
// 使用冒泡排序对字符指针数组进行排序
bubble_sort(countries, n);
// 使用快速排序对字符指针数组进行排序
// quick_sort(countries, 0, n - 1);
// 输出排序后的字符指针数组
for (int i = 0; i < n; i++) {
printf("%s\n", countries[i]);
}
return 0;
}
// 冒泡排序
void bubble_sort(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;
}
}
}
}
// 快速排序
void quick_sort(char *arr[], int left, int right)
{
if (left < right) {
int pivot = partition(arr, left, right);
quick_sort(arr, left, pivot - 1);
quick_sort(arr, pivot + 1, right);
}
}
int partition(char *arr[], int left, int right)
{
char *pivot = arr[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (strcmp(arr[j], pivot) < 0) {
i++;
char *temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
char *temp = arr[i + 1];
arr[i + 1] = arr[right];
arr[right] = temp;
return i + 1;
}
```