qSort not Sorting my array

这一生的挚爱 提交于 2019-12-13 04:27:53

问题


Here is my code:

#include <stdio.h>
#include <stdlib.h>

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;
}

and here is my output: 0.7000000.2000000.800000 Sorted Array:0.7000000.2000000.800000

Can anyone tell why is qsort() not working for me?


回答1:


Comparison functions must return int (not float). So what you have to do is, change this: float comp (const void * elem1, const void * elem2) { to int comp (const void * elem1, const void * elem2) { That's it! :)



来源:https://stackoverflow.com/questions/23027981/qsort-not-sorting-my-array

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!