比较qsort()的二维数组

时间:2016-03-04 18:41:59

标签: c arrays sorting compare qsort

我想用qsort(...)对2D int数组进行排序,但我的比较函数似乎是错误的。 qsort的参数如下:

qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

我的比较2D数组的功能:

int compareArray2D ( const void *pa, const void *pb ) {
   const int a = (const int **)pa;
   const int b = (const int **)pb;
   if (a[0] == b[0]) {
      return a[1] - b[1];
   } else {
       return a[0] - b[0];
   }
}

然而,使用以下函数对1D数组进行排序:

int compareArray (const void * a, const void * b) {
    return ( *(int*)b - *(int*)a );
}

实际上第一个功能出错,我不知道如何修复它。谢谢你的提示。

1 个答案:

答案 0 :(得分:0)

你需要a和b作为指针才能使用数组下标。尝试这样的事情;

int compareArray2D ( const void *pa, const void *pb ) {
   const int* a = pa;
   const int* b = pb;
   if(a[0] == b[0]) {
      return a[1] - b[1];
   } else {
       return a[0] - b[0];
   }
}