某结构体:{.... int num1 ,int num2....} ,按照num1大小排序 ,
如果num1 相同,则再按照num2的大小排,请大家帮忙看下如何比较简单快捷(元素不多不超过10个)
#include <stdio.h>
#include <stdlib.h>
#define n 7
typedef struct
{
int a;
int b;
} MyStruct;
int cmpfunc (const void * a, const void * b)
{
MyStruct v1 = *(MyStruct *)a;
MyStruct v2 = *(MyStruct *)b;
if (v1.a == v2.a) return v1.b - v2.b;
return v1.a - v2.a;
}
int main()
{
MyStruct a[n];
a[0].a = 2; a[0].b = 8;
a[1].a = 7; a[1].b = 1;
a[2].a = 6; a[2].b = 3;
a[3].a = 6; a[3].b = 4;
a[4].a = 3; a[4].b = 9;
a[5].a = 9; a[5].b = 3;
a[6].a = 6; a[6].b = 2;
qsort(a, n, sizeof(MyStruct), cmpfunc);
for (int i = 0; i < n; i++)
printf("%d %d\n", a[i].a, a[i].b);
return 0;
}
2 8
3 9
6 2
6 3
6 4
7 1
9 3