mit qsort sortiert ein array von long long int funktioniert nicht für große nos
Ich bin mit diesem vergleichen, die Funktion zum Sortieren von einem array aus long long int nos.
int compare(const void * p1,const void * p2)
{
return (* (long long int * )a-*(long long int * )b);
}
qsort(array,no of elements,sizeof(long long int),compare)
dies funktioniert gut für kleine nos aber, wenn das array enthält nos der oreder von 10^10 es gibt falsche Ergebnisse?
was ist der Fehler ich mache?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ergebnis
compare
Funktion mussint
. Die Subtraktion von zweilong long
leicht überlauf derint
geben (und tut es in Ihrem Fall).Versuchen Vergleich der beiden Werte explizit und Rückgabe von -1, 0 oder 1.
ausdrücklich zurück -1,1 oder 0. Dies ist den folgenden code :
http://www.cplusplus.com/reference/cstdlib/qsort/