C语言qsort函数排序图边权值 - 代码详解
这段代码使用了C语言标准库中的qsort函数,对图中的边按照权值从小到大进行排序。
qsort函数的原型为:
void qsort(void *base, size_t num, size_t size, int (*cmp)(const void *, const void *));
其中,base是待排序数组的首地址,num是待排序元素的个数,size是每个元素的大小,cmp是比较函数的指针。
比较函数的原型为:
int cmp(const void *a, const void *b);
其中,a和b是待比较的两个元素的指针,函数返回值为负数表示a应该排在b的前面,返回值为正数表示a应该排在b的后面,返回值为0表示a和b相等。
在这段代码中,cmp函数的实现比较简单,直接比较两个边的权值即可:
int cmp(const void *a, const void *b)
{
Edge *e1 = (Edge*)a;
Edge *e2 = (Edge*)b;
return e1->weight - e2->weight;
}
最后,调用qsort函数进行排序:
qsort(graph->edges, graph->edgeNum, sizeof(Edge), cmp);
这里将待排序数组的首地址(graph->edges)、元素个数(graph->edgeNum)、每个元素的大小(sizeof(Edge))和比较函数(cmp)作为参数传递给qsort函数。排序完成后,图中的边将按照权值从小到大排列。
原文地址: https://www.cveoy.top/t/topic/fXqE 著作权归作者所有。请勿转载和采集!