Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » Algorithmus

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.04.2010, 19:00 Uhr
sia



Hallo zusammen,

ich weiss net ob meine Frage hier angemessen ist, ich habe einige Fragen bezüglich die Laufzeit eines Programmes.
das Programm:

C++:
bool search ( int E [ ] , int n , int K) {
int left = 0 , right = n - 1 ;
while ( left <= right ) {
if (E [ left ] == K | | E [ right ] == K) {
returntrue ;
}
left = left + 1 ;
right = right -1 ;
}
return false ;
}


nun muss ich die exakte Anzhal der vergleiche im Worst- Best- Average-Case in abhängigkeit von n bestimmen.
kann mir einer sagen wie man das macht, bitte klein schrittig und mit Erklärung ?
THX

Dieser Post wurde am 24.04.2010 um 20:49 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.04.2010, 21:49 Uhr
Hans
Library Walker
(Operator)


Hi,

'ne wirkliche Ahnung hab ich nicht, aber so rein intuitiv würde ich mal sagen, das Du in dem Unterprogramm noch 'ne Zählvariable einbauen musst, womit Du die Vergleiche zählst, die gemacht werden. - Diese dann auch in einem weiteren Parameter zurück geben.

Dann benötigst Du ein Programm, das diese Suchroutine auf unterschiedlich grossen Datenfeldern anwendet, d.h. diese durchsucht. Diese Datenfelder würde ich der Vergleichbarkeit wegen fest vorgeben, z.b. als separate Dateien, die das Programm vorher einliesst. Die sollten ausserdem auch in mehreren Versionen vorliegen: einmal vollständig sortiert, einmal möglichst stark durcheinander, und vielleicht noch ein oder zwei Abstufungen dazwischen, also teilweise sortiert.
Dann lässt Du das Programm der Reihe nach die verschiedenen Datenfelder durchsuchen und die Ergebnisse in eine Protokolldatei schreiben.

Nehmen wir mal an, Du hast drei Datendateien, eine mit 100, eine mit 1000 und eine mit einer Mio. Elementen. Diese in jeweils zwei "Geschmacksrichtungen", nämlich sortiert und unsortiert.
Dann fängst Du mit der kleinen, sortierten Datei an, und suchst darin z.B. 5 oder 10 Werte, wobei Du die Ergebnisse protokollierst. Anschliessend suchst Du die gleichen Daten in der unsortierten Datei. Wenn Du die Ergebnisse hast, machst Du das gleiche mit der nächst grösseren Datei, in diesem Fall also mit 1000 Elementen. Und schliesslich mit der grossen Datei von einer Mio. Elementen.

Wenn sich zwischen den Ergebnissen grosse Lücken auftun, wirst Du wohl noch ein paar Vergleichsdateien erstellen müssen, etwa in 100er oder 1000er Schritten, soll heissen jede Datei enthält 100 oder 1000 Elemente mehr.

Wenn Du die Ergebnisse so in die Protokolldatei schreibst, das sie schon eine Tabellenstruktur aufweisen, kannst Du sie anschliessend in eine Tabellenkalkulation importieren, und diese daraus eine grafische Darstellung machen lassen...
(Wahrscheinlich erleichtert die Tabellenkalkulation auch die weitere statistische Analyse, bei der am Ende heraus kommt, das der Algorithmus eine Laufzeit von O(x) hat.)

So, ich hoffe, das hilft etwas weiter,
Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.04.2010, 08:46 Uhr
ao

(Operator)


Du musst die Schleifenstrukturen analysieren (Schachtelungen? Von wo bis wo laufen die Indices?). Das liefert dir für jede vorkommende Schleife einen von n abhängigen Ausdruck.

In diesem Fall hier ist das ziemlich einfach. Wenn verschachtelte Schleifen vorkämen, müsstest du die Komplexitäten entsprechend ineinander einsetzen.

Dann überlegst du, was die Gesamt-Komplexität macht, wenn n sehr groß wird. Wächst sie proportional zu n, oder quadratisch, oder gar exponentiell? Oder bleibt sie konstant?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: