Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gibt es ein Schnelleres verfahren als Min? (https://www.delphipraxis.net/47910-gibt-es-ein-schnelleres-verfahren-als-min.html)

Hallo_Thomas 17. Jun 2005 19:31

Re: Gibt es ein Schnelleres verfahren als Min?
 
@Leddl

Nach meiner Theorie müsste man es vielleicht mit Quicksort schneller gehen, aber meinen Wissen was so was angeht ist noch sehr gering! Ich habe da zwar schon Sdie Sortiertverfahren endecht, aber diese Sortierten immer nur ganze Arrays. Und ich benötige ja nur den kleinsten Wert aus 3 Variablen.

Khabarakh 17. Jun 2005 19:36

Re: Gibt es ein Schnelleres verfahren als Min?
 
In MinIntValue wird jedes Arrayelement einmal mit Result verglichen. Wie soll das denn (abgesehen von Assembler-Verbesserungen o.Ä.) schneller gehen?

Hallo_Thomas 17. Jun 2005 19:45

Re: Gibt es ein Schnelleres verfahren als Min?
 
@Khabarakh. Vieleicht hab ich mich verlesen, hab jetzt leider das eine Büchlein schon zurück zur Bibo geschafft!
Ich Dem was ich jetzt da hab, hab ich nichts gefunbden!

@ Sharky


wie meinst Du das mit der Hilfsvariablen?

r2c2 17. Jun 2005 19:45

Re: Gibt es ein Schnelleres verfahren als Min?
 
Zitat:

Zitat von Hallo_Thomas
@Leddl

Nach meiner Theorie müsste man es vielleicht mit Quicksort schneller gehen, aber meinen Wissen was so was angeht ist noch sehr gering! Ich habe da zwar schon Sdie Sortiertverfahren endecht, aber diese Sortierten immer nur ganze Arrays. Und ich benötige ja nur den kleinsten Wert aus 3 Variablen.

Jein. Zum sortieren vieler Werte ist QuickSort schneller. Ja. Aber bei 3(in Worten: DREI)? :gruebel: Nee. Qucksort hat ne "Geschwindigkeit" von O(n ld n), wenn ich mich nicht irre. Dein Sortieralgorithmis(Min-Sort(ja so heißt das)) hat eine von O(n²). Nur bei derart neidrigen ns, hällt sich der Unterschied in Grenzen. Der Aufwand, der bei einen komplizierteren Sortierverfahren(z.B. Quicksort) betrieben würde, macht das ganze höchstens langsamer.

Optimiere deinen Alg lieber auf andere Weise(Sharky hat dazu ja schon was gepostet).

mfg

Christian

r2c2 17. Jun 2005 19:54

Re: Gibt es ein Schnelleres verfahren als Min?
 
Zitat:

Zitat von Hallo_Thomas
@ Sharky
wie meinst Du das mit der Hilfsvariablen?

Ich heiß zwar nicht Sharky, kanns dir aber trotzdem erklären:
Delphi-Quellcode:
for i:=0 to 999 do
begin
  DoSomething(StrToInt(x));
end;
besser:

Delphi-Quellcode:
y :=StrToInt(x); // y is die Hilfsvariable
for i:=0 to 999 do
begin
  DoSomething(y);
end;
So sparst du dir 1000 aufrufe von StrToInt und diese Funktion is nicht ohne!

mfg

Christian

Khabarakh 17. Jun 2005 19:58

Re: Gibt es ein Schnelleres verfahren als Min?
 
@Hallo_Thomas: Angenommen, der Inhalt des Arrays ist vor der Minimum-Bestimmung jedes Mal unsortiert.
MinArrayValue vergleicht nun jedes Element genau einmal. Wie soll es denn einen schnelleren Algorithmus geben, wenn er ja wohl jedes Element mindestens einmal vergleichen muss?

Hallo_Thomas 17. Jun 2005 20:00

Re: Gibt es ein Schnelleres verfahren als Min?
 
@Khabarakh
Ganz so wissend bin ich hier auch nicht, aber deswegen poste ich ja!



ahha, Ich schaus mir glei mal an!Danke!

r2c2 17. Jun 2005 20:16

Re: Gibt es ein Schnelleres verfahren als Min?
 
MinArrayValue ist auch deshalb besser, weil ein Funktionsaufruf gespart wird. Statt Min 2x aufzurufen verwendet MinArrayValue (hoffentlich) eine Iterative Methode(ansonsten is MinArrayValue IMHO schlecht programmiert).

mfg

Christian

Khabarakh 17. Jun 2005 20:29

Re: Gibt es ein Schnelleres verfahren als Min?
 
Das sollte sich aber per inline; aber wieder relativieren, oder?

SirThornberry 17. Jun 2005 20:33

Re: Gibt es ein Schnelleres verfahren als Min?
 
@Khabarakh: Gibts inline schon bei Versionen kleiner Delphi 2005? (also jetzt mal abgesehen von asm)? Wenn ja - wie nutzt man das? Wenn Nein - dann hat sich die Frage erübrigt weil ich dann weiß das ich nicht zu dumm war es zu verwenden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.
Seite 2 von 3     12 3      

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