Jer*_*Guy 3 c arrays sorting data-structures
要打电话给我 qsort(myArray,100,sizeof(int), comp)
int comp(const int * a, const int * b)
if(a==b)
{
return 0;
}
else
{
if(a<b)
{
return -1;
}
else
{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
首先,这并不是真正的工作,当我数组排序(9,8,7,6,5,4,3,2,1,1),我得到的(4,8,7,6,5,9,3,2,1)-不是真的来分类的.
第二,我如何在另一个方向排序?我需要通过qsort的特殊标志吗?
更改比较功能,以便按照您喜欢的方式进行排序.
而compare函数则指向比较数据(而不是数据本身).例如.
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; */
}
Run Code Online (Sandbox Code Playgroud)
您需要比较值,而不是它们的地址.尝试
int comp(const int * a, const int * b)
{
return *a - *b;
}
Run Code Online (Sandbox Code Playgroud)
要反转订购,请使用
int comp(const int * a, const int * b)
{
return *b - *a;
}
Run Code Online (Sandbox Code Playgroud)