结构体实现数组冒泡排序
时间: 2023-08-08 17:10:02 浏览: 66
好的,以下是结构体实现数组冒泡排序的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
int num;
char name[20];
int score;
} Student;
void bubbleSort(Student arr[], int n) {
int i, j;
Student temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j].score < arr[j+1].score) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int n, i, j;
Student students[MAX_SIZE];
printf("Enter the number of students: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("\nEnter details of student %d:\n", i+1);
printf("Number: ");
scanf("%d", &students[i].num);
printf("Name: ");
scanf("%s", students[i].name);
printf("Score: ");
scanf("%d", &students[i].score);
}
bubbleSort(students, n);
printf("\nStudents sorted by descending score:\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%d\n", students[i].num, students[i].name, students[i].score);
}
return 0;
}
```
在这个示例中,我们定义了一个结构体 `Student` 来表示每个学生的信息,包括学号、姓名和分数。然后我们定义了一个 `bubbleSort` 函数来对学生信息进行冒泡排序。最后在 `main` 函数中,我们从用户输入读取学生信息,然后调用 `bubbleSort` 函数进行排序,并输出排好序的学生信息。
需要注意的是,结构体数组的排序方式和普通的数组排序方式是一样的,唯一的区别是比较的时候需要比较结构体的某个成员。在这个示例中,我们使用学生的分数来进行比较。