Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Funktion optimieren (https://www.delphipraxis.net/52554-funktion-optimieren.html)

SirThornberry 31. Aug 2005 22:28

Re: Funktion optimieren
 
@alzeimar: Irgendwie funktioniert es bei mir schon.
Bei folgendem Aufruf
Delphi-Quellcode:
showmessage(AddIt3('wort111;wort222', 'wort', ';', False));
bekomme ich
"wort111;wort222;wort"
ausgegeben weil wort eben noch nicht in der Zeischenfolge vorkam. Oder wie meintest du das?

Dani 31. Aug 2005 22:32

Re: Funktion optimieren
 
Zitat:

Zitat von SirThornberry
bei deinem Beispiel ist output aber auch leer so das die funktion so gut wie nix macht

Beim ersten Aufruf von insgesamt 10001 ist output leer, beim Zweiten nicht mehr. :stupid:

Zitat:

1. Die Funktionen funktionieren alle nicht, weil sie auch für den Fall 'Wort111;Wort222' fälschlicherweise das 'Wort' finden. Das ist aber gar nicht in der Liste.
Sorry, aber hast du das irgendwie überprüft? Mein Ansatz mit Pos findet ein Wort NUR, wenn davor und dahinter ein Seperator steht.

Zitat:

3. Abschließend ist das Testverfahren keins.
Warum nicht? Kann man nicht annehmen, dass der zu bearbeitende String mit der Zeit größer wird?

SirThornberry 31. Aug 2005 22:41

Re: Funktion optimieren
 
@Dani: habs bemerkt. Hab jetzt auch mal dein Testverfahren genutzt (was ja keins ist :wink: (frag mich nicht warum))
AppendStringIfUnique: 30.828 s
AddIt3: 22.766 s
AddIt2: 17.703 s

@alzaimar: Deine Funktion stimmt auch nicht. Erstens fehlt der Parameter/die Möglichkeit Casesensitive zu ignorieren und zweitens werden mehrere Trennzeischen hintereinander zugelassen.
Ansonsten ist die Funktion von dir mit 4.359 recht gut in der Zeit (so gut war meine bevor ich das Casesensitive eingebaut hatte und die doppelten Trennzeischen beseitigt hatte glaub ich nicht)

alzaimar 1. Sep 2005 09:24

Re: Funktion optimieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Sir Thornberry, hi Dani...
Erstmal Tschuldigung für den Schnellschuss... Natürlich klappen die Routinen :oops: Probiert hatte ich es nicht, sondern in einem Anfall von Überarbeitung, Senilität und Altersschwachsinn (daher der Nick) zu schnell geschossen...

Zu Deiner Kritik:
Ich hatte geschrieben, das Gross/Kleinschreibung nicht ignoriert wird. Es ging mir nur um das Verfahren (linear).
Wieso sollen doppelte Trennzeichen (also leere Wörter in der Liste) weggeschmissen werden? Das kostet wirklich Zeit, aber ich habs mal eingebaut.

Dann hatte ich als Ordnung für deinen Algorithmus O(n*m) angegeben, was quark ist, wenn m die Länge des Wortes ist.
Dein Algo ist von der Ordnung O(n*m), wobei n die Länge der Liste und m ist die ANZAHL der Wörter und damit ist dein Algo nicht mehr soooo schlecht :zwinker:.

Zum Testverfahren von Dani: Das prüft nur den Fall, das ein Wort nicht gefunden wird, also ein worst-case. Wenn Du Quicksort mit einem Worst-Case testest, wird es langsamer als Bubblesort sein, insofern muss man schon aufpassen.

Ich habe mal ein Testprogramm geschrieben. Es erzeugt die schon erwähnte Wortliste, allerdings mit Random-Zeichen.
Ich habe auch eingebaut, das Wegschnippeln der ;; zu unterbinden. Leider kackt Thornies Algo dann ab, und ich hab keine Ahnung warum.

Pseudemys Nelsoni 6. Sep 2005 07:00

Re: Funktion optimieren
 
Ganz vergessen hier zu posten :oops: :oops: :oops:

Danke für den Code, sieht ja hammer aus :cyclops: :cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz