c - 快速排序问题

标签 c qsort

我使用 C 库中的 qsort 并且我有数据类型

Element_type **pElement and Element_type is struct typedef element_type {int ,char ....} 

示例,我使用

调用 Quicksor 函数
qsort(*pElement,iCountElement,(size_t)sizeof(Element_type),compare);

和回调函数

static int compare(const void *p1, const void *p2) {
    Element_type  *a1 = (Element_type  *)p1;
    Element_type *a2 =  (Element_type   *)p2;
    return ( (a2)->iServiceId < (a1)->iServiceId );
}

但我总是遇到段错误。为什么?

最佳答案

您的比较函数应通过分别返回负值、零或正值来返回 elem1 是否小于、等于或大于 elem2。

此外,如果您想要对 Element_Type 数组进行排序,那么您可以将 void* 转换为 Element_Type* 类型。如果您尝试排序的元素是 Element_Type*,那么您可以将 void* 转换为 Element_Type**

如果您尝试排序的项目属于 Element_Type* 类型,请确保为每个项目分配内存,然后在调用 qsort 之前为每个项目进行初始化。

关于c - 快速排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022469/

相关文章:

c - 在 Swift 中格式化 Linphone SDK 的路径时出现问题

c - 汉明重量(数字中1的个数)混合C与组件

c - 如何根据另一个数组的数字顺序对数组进行排序?

c++ - 尝试使用 qsort 对 cstring 进行排序

c++ - 使用 qsort() 函数

c - 如何使用 cairo 绘制左上角和右下角的矩形?

c++ - 如何使用 cmake 添加不同的头文件夹,以便项目正确编译和运行

c - stdlib qsort 对指向结构的指针数组进行排序

c - 原始套接字和 NF_INET_POST_ROUTING

c - 在c中的结构指针数组上使用qsort时比较整数的函数