Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi aus einem Array die kleinste Zahl herausfinden (https://www.delphipraxis.net/139757-aus-einem-array-die-kleinste-zahl-herausfinden.html)

gangs-taas 4. Sep 2009 17:40

Re: aus einem Array die kleinste Zahl herausfinden
 
danke
ich habs mit ner schleife gelöst :-D

himitsu 4. Sep 2009 17:54

Re: aus einem Array die kleinste Zahl herausfinden
 
zum Thema sortuert = schneller

wenn das Array vorher schon sortiert ist, dann isses natürlich schneller :angel2:

alzaimar 4. Sep 2009 19:33

Re: aus einem Array die kleinste Zahl herausfinden
 
Zitat:

Zitat von himitsu
wenn das Array vorher schon sortiert ist, dann isses natürlich schneller :angel2:

Woher weiss man das? :stupid:

Meflin 4. Sep 2009 19:38

Re: aus einem Array die kleinste Zahl herausfinden
 
Zitat:

Zitat von alzaimar
Woher weiss man das? :stupid:

Indem man es beim Einfügen schon sortiert hält :mrgreen:

Aber genug der Theorie. Gesetz dem äußerst unwahrscheinlichen Fall, dass man tatsächlich nur ein allereinziges Mal das Minimum haben will, ist lineare Suche wirklich das Beste :stupid:

alzaimar 4. Sep 2009 19:56

Re: aus einem Array die kleinste Zahl herausfinden
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von alzaimar
Woher weiss man das? :stupid:

Indem man es beim Einfügen schon sortiert hält :mrgreen:

Das ist dann auch langsamer als mal eben in einem unsortierten Array zu suchen :)
Zitat:

Zitat von Meflin
Gesetz dem äußerst unwahrscheinlichen Fall, dass man tatsächlich nur ein allereinziges Mal das Minimum haben will

Wieso sollte ich öfter das Minimum eines Arrays ermitteln? Ändern tut es sich doch eh nicht :stupid:

Nun zur Theorie:
Wenn ich eine listenartige Datenstruktur inklusive Kenntnis des kleinsten/größten Elements benötige, werde ich meine Basisstruktur u.a. danach aussuchen, ob ich die Elemente sortiert benötige. Wenn nicht, und Löschoperationen selten sind, dürfte eine unsortierte Liste eine gute Wahl darstellen. Ansonsten empfehle ich eine Skiplist, die hier im Gegensatz zu einer sortierten Liste stets optimale Ergebnisse liefert. So sind so gut wie alle Operationen näherungsweise O(1), wohingegen eine sortierte Liste beim Einfügen und Löschen einen Aufwand O(n) und beim Suchen O(log n) aufweist. Nicht besonders, wenn Du mich fragst.

Namenloser 4. Sep 2009 19:58

Re: aus einem Array die kleinste Zahl herausfinden
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von alzaimar
Woher weiss man das? :stupid:

Indem man es beim Einfügen schon sortiert hält :mrgreen:

Kommt aber darauf an, wie man das macht. Wenn man quasi Insertion-Sort verwendet, ist es wahrscheinlich langsamer, weil die Elemente imemr wieder verschoben werden müssen. Und natürlich wird auch dabei das Array durchgescannt, mit dem Unterschied dass man hier eine binäre Suche verwenden kann, was aber nur bei größeren Mengen an Daten einen Geschwindigkeitsvorteil bringt.

Meflin 4. Sep 2009 20:01

Re: aus einem Array die kleinste Zahl herausfinden
 
Zitat:

Zitat von NamenLozer
Wenn man quasi Insertion-Sort verwendet, ist es wahrscheinlich langsamer

Wieso auch nicht gleich BogoSort :stupid:

himitsu 4. Sep 2009 20:48

Re: aus einem Array die kleinste Zahl herausfinden
 
Und wenn sich die Werte im Array ändern?

Dann gibt es für's Hinzufügen 2 Wege

- entweder sortiert hinzufügen
- oder beim Hinzufügen direkt mit den zwischengespeicherten Min- und Max-Werten vergleichen und diese so aktuell halten

Wolfgang Mix 5. Sep 2009 11:50

Re: aus einem Array die kleinste Zahl herausfinden
 
Ergänzung zu Post 8:

Hier eine bessere Testvarinte:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
 var zahl : array[1..1000] of integer;
  i,min,merker:integer;
begin
  randomize;
   for i:= 1 to 1000 do
   begin
     zahl[i]:=random(10000)+1;
   end;
   min:=1000;
   for i:= 1 to 1000 do
   begin
     if zahl[i] < min then
     begin
       min:=zahl[i];
       merker:=i;
     end;
   end;
   edit1.Text:=IntToStr(min);
   edit2.Text:=IntToStr(merker);
end;
Gruß

Wolfgang

alzaimar 5. Sep 2009 12:49

Re: aus einem Array die kleinste Zahl herausfinden
 
Zitat:

Zitat von Wolfgang Mix
Hier eine bessere Testvarinte:

Und hier eine kürzere Testvariante:
Delphi-Quellcode:
KleinsterWert := Math.MinIntValue(zahlArray);


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.
Seite 2 von 6     12 34     Letzte »    

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