Gast
2008-09-27, 22:38:07
Hi ich hab versucht, die Binäre Suche innerhalb eines Arrays in C zu schreiben.
Anbei mein Code und die Bitte um Überprüfung.
Durchgespielt auf dem Papier komm ich zu den gleichen Werten und Durchlaufzahlen wie das Programm
#include <iostream>
using namespace std;
int binSearch(int,int,int);
int array[]={1,2,3,4,5,6,7,8,9,10};
int count=0;
int main(void)
{
int erg=binSearch(0,9,6);
cout<<"\nLäufe gesamt: "<<count<<"\n";
cout<<"Ergebnis: "<<erg;
}
int binSearch(int start,int ende,int suche)
{
int mitte=(start+ende)/2;
cout<<count+1<<". Lauf."<<" Verwendete Mitte:"<<array[mitte]<<"\n";
count++;
while(1)
{
if(array[mitte]==suche)
{
return array[mitte];
}
else if(array[mitte]<suche)
{
start=mitte+1;
return(binSearch(start,ende,suche));
}
else if(array[mitte]>suche)
{
ende=mitte-1;
return(binSearch(start,ende,suche));
}
}
}
Ausgabe:
1. Lauf. Verwendete Mitte:5
2. Lauf. Verwendete Mitte:8
3. Lauf. Verwendete Mitte:6
Läufe gesamt: 3
Ergebnis: 6
Anbei mein Code und die Bitte um Überprüfung.
Durchgespielt auf dem Papier komm ich zu den gleichen Werten und Durchlaufzahlen wie das Programm
#include <iostream>
using namespace std;
int binSearch(int,int,int);
int array[]={1,2,3,4,5,6,7,8,9,10};
int count=0;
int main(void)
{
int erg=binSearch(0,9,6);
cout<<"\nLäufe gesamt: "<<count<<"\n";
cout<<"Ergebnis: "<<erg;
}
int binSearch(int start,int ende,int suche)
{
int mitte=(start+ende)/2;
cout<<count+1<<". Lauf."<<" Verwendete Mitte:"<<array[mitte]<<"\n";
count++;
while(1)
{
if(array[mitte]==suche)
{
return array[mitte];
}
else if(array[mitte]<suche)
{
start=mitte+1;
return(binSearch(start,ende,suche));
}
else if(array[mitte]>suche)
{
ende=mitte-1;
return(binSearch(start,ende,suche));
}
}
}
Ausgabe:
1. Lauf. Verwendete Mitte:5
2. Lauf. Verwendete Mitte:8
3. Lauf. Verwendete Mitte:6
Läufe gesamt: 3
Ergebnis: 6