Ich benötige den kleinsten Wert im Array und möchte ein Array sortieren,
aber es funktioniert mit qsort irgendwie nicht so wie ich möchte:
c]
uint8_t calculateIndex()
{
uint8_t array_[3];
array_[0] = getNumberOfArrayElements(result1);
array_[1] = getNumberOfArrayElements(result2);
array_[2] = getNumberOfArrayElements(result3);
int8_t size = sizeof(array_) / sizeof(array_[0]);
qsort((void*)array_, size, sizeof(array_[0]), comparator);
return array_[0];
}
[/c]
1. qsort wird nicht die schnellste Möglichkeit sein, dass Minimum aus einem Array zu finden. Da ist die "naive" Implementierung einer for-Schleife schneller. 2. In Deinem Quelltext ist "comparator" nicht definiert.
Walter T. schrieb: > Das ist die "naive" Implementierung einer > for-Schleife schneller. Alle Elemente durchzugehen und immer das kleinste zu speichern ist sogar die nachweislich schnellste überhaupt mögliche Möglichkeit. Die untere Schranke für die Ermittlung des Minimalwert bei einer zufälligen Folge von Zahlen muss ja O(n) sein. Darum ist quicksort mit O(n*log(n)) im Mittel und sogar O(n²) im worst case in jedem Fall langsamer. Schneller kann nur noch werden falls die Folge nicht zufällig ist, sondern gewisse Muster aufweist.
Cyblord -. schrieb: > Walter T. schrieb: >> Das ist die "naive" Implementierung einer >> for-Schleife schneller. > > Alle Elemente durchzugehen und immer das kleinste zu speichern ist sogar > die nachweislich schnellste überhaupt mögliche Möglichkeit. Die untere > Schranke für die Ermittlung des Minimalwert bei einer zufälligen Folge > von Zahlen muss ja O(n) sein. > > Darum ist quicksort mit O(n*log(n)) im Mittel und sogar O(n²) im worst > case in jedem Fall langsamer. > > Schneller kann nur noch werden falls die Folge nicht zufällig ist, > sondern gewisse Muster aufweist. Die Idee ist mir direkt nach der Fragestellung auch eingefallen. Ich habe es dann mit der For-Schleife gemacht. Jedoch konnte ich nicht sofort antworten, da es nicht angemeldeten Usern leider nicht erlaubt ist direkt nach Eröffnen eines Threads 2 Antworten innert einer Stunde zu verfassen. Den Fehler von mir habe ich bezüglich qsort auch gefunden. Es hat nicht funktioniert, da ich den Prototypen vergessen habe zu definieren. Das hätte mir aber der Compiler doch mit einer Warnung herausgeben müssen oder etwa nicht?
hans schrieb: > Das hätte mir aber der Compiler doch mit einer Warnung herausgeben > müssen oder etwa nicht? Da Du Deinen Quelltext nicht gezeigt hast, sondern nur ein Fragmentschnipselchen, lässt sich die Frage nicht wirklich beantworten. Wenn Du eine Funktion verwendest, ohne daß an der Stelle der Verwendung die Funktion selbst oder ein Prototyp bekannt ist, gibt ein funktionierender Compiler eine entsprechende Warnung aus, das ist richtig. Man kann natürlich Warnungen auch abschalten, dann sieht man sie nicht.
Was ist denn eigentlich die Aufgabe? Das Array zu sortieren, oder den kleinsten/größten Wert zu finden?
hans schrieb: > aber es funktioniert mit qsort irgendwie nicht so wie ich möchte: Dann mach es "irgendwie" anders.
Beitrag #5782570 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.