TK1985
04.05.2005, 16:29
Hallo zusammen!
Ich hab das Problem, dass ich nicht genau weiß wie ich in C bei einem rekursiven Divide et Impera Algorithmus (Maximum Subarray Problem, Binärsuche) ein gegebenes Feld in 2 Teilfelder zerlegen kann. Ich schaffe es zwar ein Feld in zwei Felder aufzuteilen, indem ich die erste Hälfte in Feld1 und die zweite Hälfte in Feld zwei kopiere, aber dabei ist unklar wie lang Feld1 und Feld2 ist.
Das sieht folgendermaßen aus:
int Feld1[500], Feld2 [500]
Feld1 = 1. Hälfte von Feld
Feld2 = 2. Hälfte von Feld
jetzt ruft die Funktion sich selbst auf: z.B. Suche(Feld1, start, end , Suchtext)
würde in Feld1 von start bis end nach Suchtext suchen. Nur wie bekomme ich heraus wie lange Feld1 ist und somit auch mein start und mein end?? Wenn ich die 1. und 2. Hälfte immer in vordefinierte Felder kopiere, haben die ja immer sie gleiche Länge. Feld1 und Feld2 ist immer 500 lang egal welche wieviele Elemente da wirklich drin stehen.
Die Länge brauche ich, da die Rekursion so lange durchgeführt wird bis in einem Feld nur noch 1. Element drin steht.
Hab mir schon Überlegt eine Struktur anzulegen und da als Komponente immer die tatsächliche Anzahl an Elementen reinzuschreiben.
Hab auch schon versucht gar keine neuen Felder anzulegen, sondern immer nur vom Ursprungsfeld auszugehen und start und end jeweils neu zu berechnen, hab da aber keine Berechnungsmöglichkeit gefunden.
Hat jemand eine Idee wie ich das mit dem Teilen hinbekomme?
Danke schon mal im Vorraus.
TK1985
Ich hab das Problem, dass ich nicht genau weiß wie ich in C bei einem rekursiven Divide et Impera Algorithmus (Maximum Subarray Problem, Binärsuche) ein gegebenes Feld in 2 Teilfelder zerlegen kann. Ich schaffe es zwar ein Feld in zwei Felder aufzuteilen, indem ich die erste Hälfte in Feld1 und die zweite Hälfte in Feld zwei kopiere, aber dabei ist unklar wie lang Feld1 und Feld2 ist.
Das sieht folgendermaßen aus:
int Feld1[500], Feld2 [500]
Feld1 = 1. Hälfte von Feld
Feld2 = 2. Hälfte von Feld
jetzt ruft die Funktion sich selbst auf: z.B. Suche(Feld1, start, end , Suchtext)
würde in Feld1 von start bis end nach Suchtext suchen. Nur wie bekomme ich heraus wie lange Feld1 ist und somit auch mein start und mein end?? Wenn ich die 1. und 2. Hälfte immer in vordefinierte Felder kopiere, haben die ja immer sie gleiche Länge. Feld1 und Feld2 ist immer 500 lang egal welche wieviele Elemente da wirklich drin stehen.
Die Länge brauche ich, da die Rekursion so lange durchgeführt wird bis in einem Feld nur noch 1. Element drin steht.
Hab mir schon Überlegt eine Struktur anzulegen und da als Komponente immer die tatsächliche Anzahl an Elementen reinzuschreiben.
Hab auch schon versucht gar keine neuen Felder anzulegen, sondern immer nur vom Ursprungsfeld auszugehen und start und end jeweils neu zu berechnen, hab da aber keine Berechnungsmöglichkeit gefunden.
Hat jemand eine Idee wie ich das mit dem Teilen hinbekomme?
Danke schon mal im Vorraus.
TK1985