qsort array funktioniert nicht

Gast #5780745
Lesenswert?

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]
#5780757
Lesenswert?

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.
Gast #5782296
Lesenswert?

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?
Persönliche Seite #5782315
Lesenswert?

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.
Beitrag #5782570 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren