BinarySearch, int-array - immer -1 als Rückgabe



  • Hallo!
    Habe morgen eine Klausur, und ich komme auf meinen Fehler einfach nicht drauf 😕

    Ich bekomme als Rückgabewert immer -1 zurück:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int binarySearch(int feld[], int li, int re, int key);
    int main()
    {
        int feld[] =
        {
            0,1,2,3,4,5,6,7,8,9
        };
    
        int index = binarySearch(feld,0,9,3);
        cout << "index von 3: "<< index << endl;
        return 0;
    }
    int binarySearch(int feld[], int li, int re, int key)
    {
        if(re < li) return -1;
    
        int mi = (re+li)/2;
    
        if(feld[mi] > key)
        {
           return binarySearch(feld,mi+1,re,key);
        }
        else if(feld[mi] < key)
        {
            return binarySearch(feld,li,mi-1,key);
        }
        else return mi;
    }
    

    Kann mir hier jemand helfen? 🙂



  • // Das Feld ist aufsteigend geordnet.
        // <kleiner feld[mi]> <ev. feld[mi]> <grösser feld[mi]>
    
        // wenn feld[mi] grösser als key, dann muss key links davon liegen
        if(feld[mi] > key)
        {
           // du suchst aber rechts
           return binarySearch(feld,mi+1,re,key);
        }
        else if(feld[mi] < key)
        {
            return binarySearch(feld,li,mi-1,key);
        }
    


  • tasdfgewrsth schrieb:

    // Das Feld ist aufsteigend geordnet.
        // <kleiner feld[mi]> <ev. feld[mi]> <grösser feld[mi]>
    
        // wenn feld[mi] grösser als key, dann muss key links davon liegen
        if(feld[mi] > key)
        {
           // du suchst aber rechts
           return binarySearch(feld,mi+1,re,key);
        }
        else if(feld[mi] < key)
        {
            return binarySearch(feld,li,mi-1,key);
        }
    

    Vielen Dank!


Anmelden zum Antworten