0

以下は、C での一般的な qsort のコード スニペットです。

genmyqsort が再帰で呼び出されるとき、第 4 パラメーターには何を記述すればよいですか?

int compnode(node *a, node *b){
   return(strcmp(a->name,b->name));
}

void genmyqsort(void *a, int n, int size, int (*fcmp)(const void*,const void*)){
  int pivot;

  if(n>1){
    pivot=partition(a,n,size);
    genmyqsort(a*size, pivot,size);
    genmyqsort(a+(pivot+1)*size,n-pivot-1,size);
  }
}

メインでの Qsort の呼び出し。

genmyqsort(b,n,sizeof(node),(int(*)(const void*, const void*)) compnode);
4

1 に答える 1

1

呼び出し元から取得したものと同じコンパレーターを渡します ( fcmp):

genmyqsort(a*size, pivot, size, fcmp);
genmyqsort(a+(pivot+1)*size, n-pivot-1, size, fcmp);

genmyqsort()これにより、コール ツリー内の のすべてのインスタンスが配列要素をまったく同じ方法で比較することが保証されます。

于 2013-08-29T09:31:17.097 に答える