#41 对结构体数组进行排序

题目描述:

对结构体数组进行排序。

题目描述:
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");
        return;
    }
    int ex,i,j;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(array[j].no>array[j+1].no||(array[j].no==array[j+1].no&&array[j].age>array[j+1].age)||(array[j].no==array[j+1].no&&array[j].age==array[j+1].age&&array[j].height>array[j+1].height))
            {
                ex=array[j].no;
                array[j].no=array[j+1].no;
                array[j+1].no=ex;
                ex=array[j].age;
                array[j].age=array[j+1].age;
                array[j+1].age=ex;
                ex=array[j].height;
                array[j].height=array[j+1].height;
                array[j+1].height=ex;
            }
        }
    }
    return;
}
int main()
{
    int n,i;
    struct Person a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    	scanf("%d %d %d",&a[i].no,&a[i].age,&a[i].height);
    sort(a,n);
    for(i=0;i<n;i++)
    	printf("%d %d %d\n",a[i].no,a[i].age,a[i].height);
    return 0;
}

讲解:

        结构体swap的升级版(多了个循环)。

求实求真,大气大为。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fish_in_UESTC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值