AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Gibt es ein Schnelleres verfahren als Min?
Thema durchsuchen
Ansicht
Themen-Optionen

Gibt es ein Schnelleres verfahren als Min?

Ein Thema von Hallo_Thomas · begonnen am 17. Jun 2005 · letzter Beitrag vom 18. Jun 2005
Antwort Antwort
Seite 2 von 3     12 3      
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#11

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 19:31
@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.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#12

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 19:36
In MinIntValue wird jedes Arrayelement einmal mit Result verglichen. Wie soll das denn (abgesehen von Assembler-Verbesserungen o.Ä.) schneller gehen?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#13

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 19:45
@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?
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#14

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 19:45
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)? 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
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#15

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 19:54
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
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#16

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 19:58
@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?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#17

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 20:00
@Khabarakh
Ganz so wissend bin ich hier auch nicht, aber deswegen poste ich ja!



ahha, Ich schaus mir glei mal an!Danke!
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#18

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 20:16
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
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#19

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 20:29
Das sollte sich aber per inline; aber wieder relativieren, oder?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Gibt es ein Schnelleres verfahren als Min?

  Alt 17. Jun 2005, 20:33
@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...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz