目录
一、问题描述
对结构体数组进行排序。 题目描述: struct Person{ int no; int age; int height; } 实现sort方法对结构体数组进行排序。 void sort(Person * array,int n); 根据no从小到大排序;如果no相同则根据age排序;如果age相同,则根据height排序。 注意: 遇到异常情况,输出"error";否则不要随意输出,会视为错误。
二、代码
#include<stdio.h>
// 定义结构体
struct Person{
int no;
int age;
int height;
};
void sort(struct Person* array, int n){
if (array == NULL || n <= 0) {
printf("error\n");
return;
}
struct Person t;
// 使用冒泡排序
for(int i=0; i<n; i++){
for(int j=1; j<n-i; j++){
// 根据优先级逐步判断大小
// 首先判断 no 的大小
if(array[j-1].no > array[j].no){
t = array[j-1];
array[j-1] = array[j];
array[j] = t;
}
// 如果两个相邻结构体的 no 相等, 再进一步根据 age 的相对大小排序
else if(array[j-1].no == array[j].no){
if(array[j-1].age > array[j].age){
t = array[j-1];
array[j-1] = array[j];
array[j] = t;
}
// 再进一步的,如果两个相邻元素的 age 也相等, 再根据 height 的相对大小排序
else if(array[j-1].age == array[j].age){
if(array[j-1].height > array[j].height){
t = array[j-1];
array[j-1] = array[j];
array[j] = t;
}
}
}
}
}
return ;
}