我正在尝试使用 qsort 对几个不同的整数数组进行排序,但它似乎没有执行排序。这是我的比较器函数,一个用于向前排序,一个用于向后排序:
int comp(const void *elem1, const void *elem2){
int x = *(int*)elem1;
int y = *(int*)elem2;
if(x > y) return 1;
if (x < y ) return -1;
return 0;
}
int compReverse(const void *elem1, const void *elem2) {
int x = *(int*)elem1;
int y = *(int*)elem2;
if (x > y) return -1;
if (x < y) return 1;
return 0;
}
这是我称之为 qsort 的地方。要排序的项目是 malloc'ed int *s。NELEMS 是一个#define,它将数组的总字节大小除以 int 的大小来获得数组长度。
qsort(ascendingOrderArray, NELEMS(ascendingOrderArray),
sizeof(*ascendingOrderArray),comp);
qsort(descendingOrderArray, NELEMS(descendingOrderArray),
sizeof(*descendingOrderArray), compReverse);
当我遍历新数组时,它们不是我期望的顺序。事实上,除了第一个数字的位置之外,它们根本没有顺序,并且与未排序的数组无法区分。这是怎么回事?