gpt4 book ai didi

qsort() 比较二维数组

转载 作者:行者123 更新时间:2023-11-30 17:04:25 33 4
gpt4 key购买 nike

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

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

以及我用于比较二维数组的函数:

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];
}
}

但是,使用以下函数对一维数组进行排序是有效的:

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

实际上第一个函数出错了,我不知道如何修复它。谢谢您的提示。

最佳答案

您需要 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];
}
}

关于qsort() 比较二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35803677/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com