To sort I call qsort(myArray,100,sizeof(int), comp)
int comp(const int * a, const int * b)
if(a==b)
{
return 0;
}
else
{
if(a
Your comparator is broken. You are comparing the pointer values rather than the values being pointed to. Add the *
dereference operator to the a
and b
comparisons and it should work.
You need to compare the values, not their addresses. Try
int comp(const int * a, const int * b)
{
return *a - *b;
}
To reverse the ordering, use
int comp(const int * a, const int * b)
{
return *b - *a;
}
Change your compare function so that it is ordering the way you like.
And the compare function takes pointers to compared data (not the data itself). Eg.
int compare (const void* p1, const void* p2)
{
int i1 = *(int*) p1;
int i2 = *(int*) p2;
if (i1 < i2) return -1;
else if (i1 == i2) return 0;
else return 1;
/* or simply: return i1 - i2; */
}