# include & ltstdio.h & gt
typedef struct _student {
int ID,Class
}學生;
//第壹個方法需要調用兩次。
void Sort _ 1(student * s,int count,int field ){
int i,j,k;
student tmp、* c =(student *)((int *)s+field);
for(I = 0;我& ltcount-1;i++) {
for(k = I,j = I+1;j & lt數數;j++)
if(*(int *)(c+k)& gt;*(int *)(c+j))k = j;
如果(k!=i)
tmp = s【k】,s【k】= s【I】,s【I】= tmp;
}
}
//第二種方法是直接排序兩次。
void排序(student *s,int count ){
int i,j,k;
學生tmp
for(I = 0;我& ltcount-1;i++) {
for(k = I,j = I+1;j & lt數數;j++)
if(s【k】。ID & gts【j】。ID)k = j;
如果(k!=i)
tmp = s【k】,s【k】= s【I】,s【I】= tmp;
}
for(I = 0;我& ltcount-1;i++) {
for(k = I,j = I+1;j & lt數數;j++)
if(s【k】。Class & gts【j】。class)k = j;
如果(k!=i)
tmp = s【k】,s【k】= s【I】,s【I】= tmp;
}
}
int main() {
int I;
學生a【5】= {
{1001,1},{1002,1},{1003,2},
{2001,1},{2002,2},
};
//Sort(a,5);
sort _ 1(a,5,0);
sort _ 1(a,5,1);
for(I = 0;我& lt5;i++)
printf(“Class:% d \ tID:% d \ n“,a【I】。類,a【I】。ID);
系統(“暫停”);
返回0;
}