用C语言指针数组对名字排序
时间: 2023-10-26 14:16:55 浏览: 38
好的,我可以为您提供解决方案。您可以使用 C 语言中的 qsort 函数来排序指针数组。以下是一个基本示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 5
int compare(const void *a, const void *b) {
// 比较两个字符串的大小
return strcmp(*(char **)a, *(char **)b);
}
int main() {
char *names[SIZE] = {"Alex", "Charlie", "Bob", "Dave", "Emily"};
// 排序指针数组
qsort(names, SIZE, sizeof(char *), compare);
// 输出排序后的名字
for(int i = 0; i < SIZE; i++) {
printf("%s\n", names[i]);
}
return 0;
}
```
以上代码将会按照字母顺序输出名字。希望这能够帮助您解决问题!
相关问题
C语言指针数组快速排序
C语言指针数组快速排序的实现如下:
```c
#include <stdio.h>
// 交换两个指针的值
void swap(int** a, int** b) {
int* temp = *a;
*a = *b;
*b = temp;
}
// 快速排序的递归函数
void quickSort(int** arr, int left, int right) {
if (left >= right) {
return;
}
int* pivot = arr[left]; // 选取第一个元素作为基准数
int i = left + 1;
int j = right;
while (i <= j) {
while (i <= j && *arr[i] <= *pivot) {
i++;
}
while (i <= j && *arr[j] > *pivot) {
j--;
}
if (i < j) {
swap(&arr[i], &arr[j]);
}
}
swap(&arr[left], &arr[j]);
quickSort(arr, left, j - 1); // 对基准数左边的序列进行递归排序
quickSort(arr, j + 1, right); // 对基准数右边的序列进行递归排序
}
// 打印数组
void printArray(int** arr, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", *arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {5, 8, 7, 6, 4, 3, 9};
int* ptrArr[7];
// 将指针数组指向原始数组的元素
for (int i = 0; i < 7; i++) {
ptrArr[i] = &arr[i];
}
int size = sizeof(arr) / sizeof(arr[0]);
printf("原始数组:");
printArray(ptrArr, size);
quickSort(ptrArr, 0, size - 1);
printf("排序后的数组:");
printArray(ptrArr, size);
return 0;
}
```
c语言 利用指针数组对多个字符串进行排序
利用指针数组对多个字符串进行排序的方法如下:
首先,定义一个存储字符串的数组,例如字符串数组arr[max_size],其中max_size表示最大的字符串数量。
然后,定义一个指针数组ptr[max_size],用于指向字符串数组arr中的每个字符串。
接下来,从用户输入或者其他方式获取多个字符串,并将它们逐个存储到字符串数组arr中。
然后,将指针数组ptr的元素指向字符串数组arr中的每个字符串,即ptr[i] = &arr[i],其中i表示数组的索引。
利用冒泡排序、选择排序或快速排序等排序算法对指针数组ptr进行排序。排序的依据可以是字符串的字母顺序或者长度等。
最后,根据排序后的指针数组ptr的顺序,通过访问指针数组的元素,即*ptr[i],即可按照排序后的顺序输出或处理多个字符串。
需要注意的是,由于指针数组只是存储了字符串的地址,而没有实际存储字符串本身的内容,所以在排序过程中并不会改变字符串数组arr的顺序,而是通过改变指针数组ptr的顺序来实现排序。