Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Suche im Array » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
eulerscheZahl

Nein, das was ich geschrieben habe, ist keine binäre Suche. Ich wollte dir nur zeigen, wie du das Kopieren des Array vermeiden kannst.
Sieht gut aus, wie du die Unterscheidung des zu durchsuchenden Intervalls eingebaut hast.
neuling96

. Falls nein, wird die Suche auf der
vorderen Halfte (falls der Suchwert kleiner ist) oder hinteren Halfte des Arrays wiederholt.

wenn ich dein code geanu ansehe, dann läuft es nicht nach diesen schema, oder ??
, aber ich bin mir nicht sicher


ich hab versucht dein code um zuschreiben
public class Suche {
private static boolean suchebinaer(int a, int[] array, int start, int end) {
if (start >= end) {
return array[start] == a;
}else{
int mitte = (start + end) / 2;
if (array[mitte] == a) {
return true;
}else{
if (array[mitte] > a){
return suchebinaer(a, array, start, mitte - 1);
}else{
return suchebinaer(a, array, mitte + 1, end);
}
}
}
}
public static boolean suchebinaer(int a, int[] array) {
if (array.length == 0) {
return false;
}else{
return suchebinaer(a, array, 0, array.length - 1);
}
}
}
eulerscheZahl

Ja.
neuling96

Zitat:
Original von neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:

public class Suche {
public static boolean suchebinaer(int a, int [] array){
if(array.length==1 && a != array[0]) {
return false;
}else {
int m= array.length/2;
if(array[m]==a){
return true;
}else {
if(array[m]>=a){
int[]arrayx=new int [m+1];
for(int i=0; i<=m; i++){
arrayx[i]=array[i];
}
return suchebinaer(a, arrayx);
}else {
int[]arrayx=new int [m];
for(int i=0; i<m; i++){
arrayx[i]=array[i+m];
}
return suchebinaer(a, arrayx);
}
}
}
}
}


l


würdet man diesen code als rekursiv bezeichnen?
ich mein es "ruft" sich doch selbst wieder auf? verwirrt , also ja ?
neuling96

ja danke smile
eulerscheZahl

Da habe ich die Abbruchbedinung verbockt.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
private static boolean suchebinaer(int a, int[] array, int start, int end) {
	if (start >= end) {
		return array[start] == a;
	}
	int mitte = (start + end) / 2;
	return array[mitte] == a 
			|| suchebinaer(a, array, start, mitte - 1)
			|| suchebinaer(a, array, mitte + 1, end);
}

sollte jetzt passen.
neuling96

Zitat:
Original von eulerscheZahl
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
private static boolean suchebinaer(int a, int[] array, int start, int end) {
	int mitte = (start + end) / 2;
	return array[mitte] == a || suchebinaer(a, array, start, mitte - 1)
			|| suchebinaer(a, array, mitte + 1, end);

}

public static boolean suchebinaer(int a, int[] array) {
	if (array.length == 0) {
		return false;
	}
	return suchebinaer(a, array, 0, array.length - 1);
}


für (5, new int[] { 1, 2,3, 7, 13 }))
liefert ?

neuling96 hat dieses Bild (verkleinerte Version) angehängt:
Unbenannt.jpg

eulerscheZahl

Im Studium hatte ich bereits 2 Semester C und eins C++, zur Zeit noch Java.
In der Schule man ein wenig Delphi (die Sprache ist zwar objektorientiert, aber wir kamen noch nichtmal bis zu Funktionen, haben alles in die main geschrieben.
Ich habe mich dann selbst weiter damit beschäftigt und mir auch C# beigebracht. Mit den beiden Sprachen programmiere ich auch in der Arbeit (Delphi nur, um alten Code zu reparieren).
neuling96

nochmal wow großes Grinsen

hast du dir programmieren selbst beigebracht?
eulerscheZahl

Nur beim Programmieren. Ich studiere Elektro-und Informationstechnik. Da lerne ich zwar auch Programmieren, boolsche Algebra und so. Aber im theoretischen Bereich sieht es nicht so gut aus, das Hoare-Kalkül sagt mir nur vom Namen her etwas.
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.