2013-04-08 4 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

Вы не показывая нам свой полный код. –

ответ

1

Ваше прохождение в sizeof (double) для подсчета элементов, подлежащих сортировке. SizeOf (двойной) == 8

Попробуйте добавить следующие строки в функции сортировки:

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

но почему? как я могу это исправить? Я действительно не знаю –

+0

Ваше прохождение в массиве двойников, вы должны в какой-то момент знать, сколько элементов есть. Вы должны передать количество элементов в свою функцию сортировки. – jeremy

+0

oh спасибо большое ...... –

Смежные вопросы