qSort not Sorting my array
这是我的代码:
#include #include float comp (const void * elem1, const void * elem2) { float f = *((float*)elem1); float s = *((float*)elem2); if (f > s) return 1; if (f < s) return -1; return 0; } int main(void) { int t, n, temp, temp1, x; float input[2][50][1000]; scanf("%d", &t); for(temp=0; temp<t; temp++){ scanf("%d ", &n); for(temp1=0; temp1<n; temp1++){ scanf("%f", &input[0][temp][temp1]); } for(temp1=0; temp1<n; temp1++){ scanf("%f", &input[1][temp][temp1]); } for(x=0; x<temp1; x++){ printf("%f", input[0][temp][x]); } qsort (input[0][temp], n, sizeof(*input[0][temp]), comp); printf("\n Sorted Array:"); for(x=0; x<temp1; x++){ printf("%f", input[0][temp][x]); } } return 0; }
这是我的输出:0.7000000.2000000.800000排序数组:0.7000000.2000000.800000
任何人都可以告诉为什么qsort()不适合我?
比较函数必须返回int
(不是float
)。 所以你需要做的是,改变这个: float comp (const void * elem1, const void * elem2) {
to int comp (const void * elem1, const void * elem2) {
就是这样! 🙂