数据结构 双关键字排序

img

typedef struct _PUKE
{
  int huase;
  int p;
}PUKE;

typedef void (*f)(PUKE *p,int n);

void sort(PUKE *p,int n)
{
  int i,j;
  PUKE t;
  for(i=0;i<n;i++)
    for(j=0;j<n-i-1;j++)
    {
      if(p[j].huase < p[j+1].huase)  || ((p[j].huase == p[j+1].huase) && (p[j].p < p[j+1].p)))
      {
        t = p[j];
        p[j] = p[j+1];
        p[j+1] = t;
      }
    }
}

int main()
{
  PUKE puke[100];
  int n,i,j;
  scanf("%d",&n);
  for(i=0;i<n;i++)
    scanf("%d %d",&puke[i].huase,&puke[i].p);//花色输入1,2,3,4表示黑、方、梅、杏即可
  f fun = sort;
  fun(puke,n);
}

先按优先关键字排序,关键字相同时,再按次关键字排序啊