求教这段代码为什么无法运行
  • 板块学术版
  • 楼主MnPb
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/10/28 09:11
  • 上次更新2023/10/27 05:29:27
查看原帖
求教这段代码为什么无法运行
803004
MnPb楼主2022/10/28 09:11

手打的结构体的排序(会用sort就是想要手写试一试)

#include <iostream>
#include <algorithm>
using namespace std;
struct person{
    int no;
    int age;
    int height;
};
bool cmp(person a,person b)
{
    if(a.no>b.no) return 0;
    else if(a.no<b.no) return 1;
    else{
        if(a.age>b.age) return 0;
        else if(a.age<b.age) return 1;
        else{
            if(a.height>b.height) return 0;
            else if(a.height<b.height) return 1;
        }
    }
    return 1;
}
void swap(person a,person b)
{
    person c=a;
    a=b;
    b=c;
}
void person_sort(person a[],int l,int r)
{
    person mid=a[(l+r)/2];
    int i=l,j=r;
    do{
        while(cmp(a[i],mid)) i++;
        while(cmp(mid,a[j])) j--;
        if(i<=j)
        {
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }while(i<=j);
    if(l<j) person_sort(a,l,j);
    if(i<r) person_sort(a,i,r);
}
int main()
{
    int n;
    cin>>n;
    struct person a[100];
    for(int i=1;i<=n;i++)
        cin>>a[i].no>>a[i].age>>a[i].height;
    person_sort(a,1,n);
    for(int i=1;i<=n;i++)
        cout<<a[i].no<<" "<<a[i].age<<" "<<a[i].height<<endl;
    return 0;
}

2022/10/28 09:11
加载中...