我使用 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/