#include <stdio.h>
#include <stdlib.h>
float values[] = { 4, 1, 10, 9, 2, 5, -1, -9, -2,10000,-0.05,-3,-1.1 };
int compare (const void * a, const void * b)
{
return ((int) (*(float*)a - *(float*)b));
}
int main()
{
int i;
qsort (values, 13, sizeof(float), compare);
for (i = 0; i < 13; i++)
{
printf ("%f ",values[ i ]);
}
putchar('\n');
return 0;
}
結果是:問題試圖使用C qsort函數
-9.000000 -3.000000 -2.000000 -1.000000 -1.100000 -0.050000 1.000000 2.000000 4.000000 5.000000 9.000000 10.000000 10000.000000
這是錯誤的,因爲訂單-1和-1.1發生變化。 我相信這是因爲我的「比較」功能。
我該如何解決這個問題?
感謝
_qsort_正常工作。您的_call到qsort_已損壞。 – aaronasterling 2010-10-07 23:19:50