2014-04-12 74 views
0

這裏是我的代碼:快速排序不排序我的數組

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

,這裏是我的輸出: 0.7000000.2000000.800000 有序數組:0.7000000.2000000.800000

誰能告訴爲什麼的qsort()不爲我工作?

+6

比較函數必須返回'int'(而不是'float') –

+0

[**請參閱live **](http://ideone.com/XCDxl0) – WhozCraig

+0

@AlterMann Hail!謝謝 –

回答

0

比較函數必須返回int(而不是float)。所以你要做的是,改變這個: float comp (const void * elem1, const void * elem2) {int comp (const void * elem1, const void * elem2) {就是這樣! :)