结构体数组排序c++算法代码
时间: 2023-03-19 09:22:06 浏览: 141
以下是使用 C 语言编写的结构体数组排序算法代码,具体实现可以根据排序需求选择不同的排序算法,这里以快速排序为例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
typedef struct {
int id;
char name[20];
int score;
} Student;
// 快速排序函数
void quickSort(Student arr[], int left, int right) {
if (left >= right) return;
int i = left, j = right;
Student pivot = arr[left];
while (i < j) {
while (i < j && strcmp(arr[j].name, pivot.name) >= 0) j--;
if (i < j) arr[i++] = arr[j];
while (i < j && strcmp(arr[i].name, pivot.name) < 0) i++;
if (i < j) arr[j--] = arr[i];
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
int main() {
int n = 5;
Student arr[5] = {{1, "Tom", 90},
{2, "Jerry", 80},
{3, "Alice", 70},
{4, "Bob", 85},
{5, "Mike", 75}};
printf("排序前:\n");
for (int i = 0; i < n; i++) {
printf("%d %s %d\n", arr[i].id, arr[i].name, arr[i].score);
}
quickSort(arr, 0, n - 1);
printf("\n排序后:\n");
for (int i = 0; i < n; i++) {
printf("%d %s %d\n", arr[i].id, arr[i].name, arr[i].score);
}
return 0;
}
```
上述代码中定义了一个 `Student` 结构体,其中包含学生的学号、姓名和分数三个属性。使用了快速排序算法来对结构体数组 `arr` 按照学生姓名进行排序,并输出排序结果。可以根据需要修改 `Student` 结构体的定义和排序算法的实现。
阅读全文