#define u32 uint32_t
struct edge {
u32 v1;
u32 v2;
};
struct edge *array = malloc((sizeof(struct edge))*Narray);
int struct_cmp_by_v1(const void *i, const void *j) {
struct edge *a = (struct edge *)i;
struct edge *b = (struct edge *)j;
u32 x = a->v1;
u32 y = b->v1;
if(x < y)
return -1;
else if(x == y)
return 0;
else
return 1;
}
qsort(array, (size_t)(sizeof(array)/sizeof(struct edge)), sizeof(struct edge), struct_cmp_by_v1);
Run Code Online (Sandbox Code Playgroud)
我想安排一个struct和qsort数组应该只比较结构的一个字段,以便结构被排序保持v1具有其对应的伙伴v2的不变量,即使在被v1排序后,情况是编译虽然它的顺序是-O3标志,但是输出在某种程度上是无序的,因为许多数量的u32可以重复,而有些很多很少,无论如何都没有顺序.
qsort命令,但它使它凌乱,在执行结束时,我要求一个函数来检查订单并退出:
amount of elements in the array:25056012
begins to order
finished …
Run Code Online (Sandbox Code Playgroud) c ×1