qsort 不对整型数组做任何改动
qsort does not make any changes to the integer array
我正在使用 qsort 对整数数组进行排序。但是 qsort 没有对数组进行任何更改。我的比较函数如下:
int mycomp(const void *a, const void *b){
int *a1 = (int*)a;
int *b1 = (int*)b;
if ( a1 < b1 )
return -1;
else if ( a1 == b1 )
return 0;
else
return 1;
}
数组包含:
pos[M] = {40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 5, 10, 15, 20, 15, 30, 35};
我将 qsort 称为:
qsort(pos, M, sizeof(int), mycomp);
输出是完全相同的数组。谁能帮帮我?
你比较的是指针而不是值。
修复:
int a1 = *(int*)a;
int b1 = *(int*)b;
我正在使用 qsort 对整数数组进行排序。但是 qsort 没有对数组进行任何更改。我的比较函数如下:
int mycomp(const void *a, const void *b){
int *a1 = (int*)a;
int *b1 = (int*)b;
if ( a1 < b1 )
return -1;
else if ( a1 == b1 )
return 0;
else
return 1;
}
数组包含:
pos[M] = {40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 5, 10, 15, 20, 15, 30, 35};
我将 qsort 称为:
qsort(pos, M, sizeof(int), mycomp);
输出是完全相同的数组。谁能帮帮我?
你比较的是指针而不是值。
修复:
int a1 = *(int*)a;
int b1 = *(int*)b;