2013-04-08 81 views
1

我有那種陣列polsum這個代碼:如何正確排序數組?

int comp (const void * a, const void * b){ 
    double aa = *(double*)a, bb = *(double*)b; 

    if (aa < bb) return -1; 
    if (aa > bb) return 1; 
    return 0; 
} 

double sort(double *polsum){        
    int p; 
    qsort(polsum, sizeof(double),sizeof(double), comp); 
    return 0; 
} 

但輸出:

5,01/ 
80,86/ 
85,01/ 
85,01/ 
300,88/ 
600,88/ 
77888,88/ 
100400,00/ 
670,88/ 
80,86/ 
80,86/ 

我在哪裏犯了一個錯誤?

+0

你不向我們展示你的全部代碼。 – 2013-04-08 18:30:02

回答

1

您傳入的sizeof(double)爲要排序的元素數。的sizeof(雙)== 8

考慮添加以下到您的排序功能:

 
double sort(double *polsum, int count) { 
    int p; 
    qsort(polsum, count, sizeof(double), comp); 
    return 0; 
} 
+0

但是爲什麼?我該如何修復這個問題?我真的不知道 – 2013-04-08 18:45:40

+0

你在傳遞一系列雙打時,你應該知道有多少元素。你應該將許多元素傳遞給你的排序函數。 – jeremy 2013-04-08 18:50:46

+0

噢,非常感謝,非常感謝...... – 2013-04-08 18:55:48