qsortを使用してintのいくつかの異なる配列をソートしようとしていますが、ソートを実行していないようです。これが私のコンパレータ関数です。1つは順方向にソートし、もう1つは逆方向にソートします。
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されたint*sです。NELEMSは、配列の合計バイトサイズをintのサイズで除算して、配列の長さを取得する#defineです。
qsort(ascendingOrderArray, NELEMS(ascendingOrderArray),
sizeof(*ascendingOrderArray),comp);
qsort(descendingOrderArray, NELEMS(descendingOrderArray),
sizeof(*descendingOrderArray), compReverse);
新しい配列を反復処理すると、期待した順序になりません。実際、それらはまったく順序がなく、最初の番号の配置を除いて、ソートされていない配列と区別できません。どうしたの?