BinarySearch, int-array - immer -1 als Rückgabe
-
Hallo!
Habe morgen eine Klausur, und ich komme auf meinen Fehler einfach nicht draufIch 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!