C语言中如何用冒泡排序给人名排序
时间: 2024-11-30 15:22:47 浏览: 32
在C语言中,冒泡排序是一种简单的排序算法,可以用来对人名字符串按照字母顺序进行排序。这里是一个基本的冒泡排序示例,假设我们有一个存储人名的一维字符数组:
```c
#include <stdio.h>
#include <string.h>
void bubbleSort(char names[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
// 比较当前元素和下一个元素
if (strcmp(names[j], names[j + 1]) > 0) {
// 如果前者大于后者,交换它们的位置
char temp[50]; // 假设名字长度不超过49个字符
strcpy(temp, names[j]); // 备份第一个名字
strcpy(names[j], names[j + 1]);
strcpy(names[j + 1], temp); // 把名字放回原位置
}
}
}
}
int main() {
char names[] = {"张三", "李四", "王五", "赵六"};
int n = sizeof(names) / sizeof(names[0]);
printf("Before sorting:\n");
for (int i = 0; i < n; i++) {
printf("%s ", names[i]);
}
bubbleSort(names, n);
printf("\nAfter sorting:\n");
for (int i = 0; i < n; i++) {
printf("%s ", names[i]);
}
return 0;
}
```
在这个例子中,`bubbleSort`函数通过比较相邻的人名并按需要交换它们来进行排序。注意,由于这个版本没有处理中文排序,对于汉字可能会出现问题,因为排序依赖的是字节值而不是笔画顺序。实际应用中,如果涉及到非ASCII字符,可能需要使用更复杂的排序算法,如归并排序或快速排序等。
阅读全文