C-Suche



  • Hallo,

    ich möchte in einem Array das mit double Werte gefühlt ist, und auch sortiert ist, einen Wert finden. Wenn dieser Wert nicht gefunden wird soll der nächst- kleinere und größere mir zurückgegeben werden.

    Bsp:
    double value[4] = { 0.1596, 0.11598, 0.11599, 0.11560};

    Ich suche 0.11597 und finde es nicht. Die Funktion soll mir 0.1596 und 0.11598 zurück liefern.

    Für die normale Suche finde ich genug im Internet, aber das mit den nächst- kleinsten und größten hab ich leider nicht gefunden.

    Wenn jemand Tipps hat würde ich mich freuen!
    Grüße



  • Also erstmal ist das Problem nicht wohldefiniert, da es am Anfang kein kleineres und am Ende kein größeres Element gibt. Wenn wir das mal ignorieren, geht man naheliegenderweise so vor, dass man von links solange durchgeht, bis man ein Element >= dem gesuchten findet. Ist es gleich, ist es das gesuchte, ist es echt größer, dann gibt es das gesuchte nicht, so dass man das nun gefundene und seinen Vorgänger zurückgibt.

    Probleme mit der Gleichheit von doubles hab ich ebenfalls ignoriert.



  • Möchtest du im Nichtgleich-Fall zwei Werte zurück bekommen, oder den, der am nächsten dran ist?

    Wenn du einen Wert gefunden hast der größer als dein gesuchter Wert ist, musst du den nochmal mit dem bereits gefundenen vergleichen und das Minimum merken.
    Für den kleineren Wert genauso.


Anmelden zum Antworten