Suche ähnliche Funktion wie bsearch
-
Bevor ich das Rad neu erfinde, vielleicht kennt jemand eine offene Bibliothek mit einer Funktion, die so ähnlich ist wie bsearch, aber der Rückgabewert
soll nicht ein Zeiger sein, sondern entweder der Index im Array sein, wo das Element gefunden wurde, oder, falls das Element nicht gefunden wird, die Stelle, an der ein Suchschlüssel eingefügt werden müsste, damit die Liste sortiert bleibt.
Z.B. könnte dafür ein negativer Wert als Rückgabewert verwendet werden, dessen Betrag dann als Einfüge-Index interpretiert werden könnte.
Wäre sehr froh, wenn schon einmal jemand in irgendeiner offenen Bibliothek über so eine ähnliche Funktion gestolpert ist.
Thx für Tipps.
-
den index kannste aus dem zeiger berechnen, falls das element drin ist.
index=bserach(...)-arraybegin;
falls nicht, mußt du eh platz machen, mit einer schleife, die vom ende bis zur fundstelle die elemente eins nach hinten rutschen läßt. da brauchst du nicht vorher zu wissen, bis wohin die schleife geht.ansonsten nimm die eine bsearch-implemetierung, zum beispiel http://www.koders.com/c/fid541FB7CBA11966C205E4ED51F3B95E459BE1AA10.aspx und änderen den rückgabewert nach deinen wünschen ab. nee, zu viel nachdenken.
nimm eine implementierung von std::lower_bound http://www.cplusplus.com/reference/algorithm/lower_bound/ , denn deren verhalten ist schon sehr genau das, was du suchst, und benutz die innereien von bsearch, um sie nach C zu übersetzen.