Frage von coolnispur, 69

Aufgabe für sehr intelligente Menschen. C Programmieren, Mathe Hilfe?

Kann mir jemand sagen was das machen soll? :S Aufgabe als Bild.

Danke schon mal im Vorraus :)

Meine Idee:

int test () {

int n = 7;
int a [10] = {0,3,8,9,13,14,15};
int li = 0;
int re = n+1;
int m;
int s = 4;
while (li<re-1)
{
    m = (li +re) / 2; 
    if (s <= a[m-1]) //-1 evtl wegen start Array bei 0 
        re = m;
    else
        li = m;

    printf("li: %d  re: %d m: %d\n",li , re ,m );
}

return re;  //mit a[m] = 1  || mit a[m-1] = 3

}

Antwort
von regex9, 35

Das ist der Algorithmus für eine Art der binären Suche.

Antwort
von martin0815100, 46

Die letzte Zeile ist sowieso Unsinn.

Ausgabe: re wird übersetzt in printf().

Das ist ein Suchalgorithmus, welcher immer das Suchintervall halbiert um das Element zu finden, welches am dichtesten an dem Suchwert rankommt (und zwar von unten also <=).

Keine passende Antwort gefunden?

Fragen Sie die Community