小编Iva*_*yra的帖子

qsort与比较无符号int为32位,失败,我不看错误?

#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
推荐指数
1
解决办法
95
查看次数

标签 统计

c ×1