qsort



  • Nach dem ich mich jetzt 1 Stunde lang durch die Suchfunktion geackert habe bin ich leider nur bedingt schlauer.

    Und zwar hat man im qsort die Funktion compare drinn und was ich so über die Suche herausfand ist, dass die meisten diese Funktion selbst schreiben.

    heisst das ich muss sie immer selbst schreiben und an meine zu sortierenden Werte anpassen?
    kann ich nicht memcmp hinein schmeissen und benutzen?
    😕

    danke für Antwort.



  • will wissen schrieb:

    heisst das ich muss sie immer selbst schreiben und an meine zu sortierenden Werte anpassen?

    Ja, ausser du hast zufälligerweise schon eine Funktion die passt.

    will wissen schrieb:

    kann ich nicht memcmp hinein schmeissen und benutzen?

    Nein, da die Signatur von memcmp() nicht zu der von qsort() geforderten Vergleichs-Callback-Funktion passt. Du kannst, wenn denn memcmp() deine Anforderungen erfüllt (was wir nicht beurteilen können), allerdings einen minimalen Wrapper drum bauen.

    Viel wichtiger ist, dass du verstehst warum qsort so aufgebaut ist. Tust du das?



  • mit signatur glaube ich weiss ich was du meinst. du meinst den rückgabewert der laut reference *a-*b ist und somit ein int differenz ist.

    bei memcmp beikomme ich ja 0 bei gleich oder eine byte differenz zurück wenn ich richtig liege.

    ^Viel wichtiger ist, dass du verstehst warum qsort so aufgebaut ist. Tust du das?^
    jaein bin für input immer offen.. 😋



  • sorry schlecht ausgedrückt mit byte differenz meine ich natürlich eine aufs byte bezogene differenz.



  • will wissen schrieb:

    mit signatur glaube ich weiss ich was du meinst. du meinst den rückgabewert der laut reference *a-*b ist und somit ein int differenz ist.

    Nein, ich meinte, dass memcmp 3 Parameter bekommt, aber die Callback nur 2 will. Ob der Rückgabewert von memcmp() deinen Anforderungen gerecht wird kann ich, wie bereits gesagt, nicht beurteilen. Was willst du denn vergleichen?

    will wissen schrieb:

    ^Viel wichtiger ist, dass du verstehst warum qsort so aufgebaut ist. Tust du das?^
    jaein bin für input immer offen.. 😋

    qsort() wurde so designt, dass man ein Array unabhängig von dessen Typen vergleichen kann. Du kannst damit ein einfaches Array von int vergleichen, oder ein Array von Zeiger auf Strukturen etc. pp. Aber um genau diese flexibilität zu erreichen, musst du die Vergleichsfunktion liefern, da die Designer von qsort() ja nicht wissen können was du denn sortieren willst. So weit klar?



  • Tim schrieb:

    Nein, ich meinte, dass memcmp 3 Parameter bekommt, aber die Callback nur 2 will. Ob der Rückgabewert von memcmp() deinen Anforderungen gerecht wird kann ich, wie bereits gesagt, nicht beurteilen. Was willst du denn vergleichen?

    ok andere richtung hatte ich auch gewusst 🤡

    ja will eh nur ein einfaches int array sortiern. somit kann ich gleich die funktion aus der referece benutzen. 😃

    danke tim für deine hilfe jetzt kenn ich mich aus! 👍

    mir lag nur die compare im magen weil will ja wissen wieso...



  • will wissen schrieb:

    ja will eh nur ein einfaches int array sortiern. somit kann ich gleich die funktion aus der referece benutzen. 😃

    Also da wird dir memcmp() aber nicht helfen.



  • memcmp war auch nur als beispiel gedacht.

    wie gesagt im prinzip ging es mir nur ums wieso und wie..

    aber mit deinen infos hab ich mir meinen schrebenhaufen schon zusammen flicken können. 🤡

    thx nochmal


Anmelden zum Antworten