![]() |
Grösster Wert in einem Array
Hallo,
wir hatten heute in Informatik aufgekriegt den grössten Wert aus einem Array zu suchen. Ich hab mir dazu was gebastelt und wollte nun wissen, ob und wie man was an dem Algo (soweit man das Algo nennen kann) verbessern könnte: P.S.: Das Programm ist in Turbo Pascal 7!
Delphi-Quellcode:
mfG
CONST
MAX_ARRAY_SIZE = 5; TYPE TMyArray = Array[1..MAX_ARRAY_SIZE] of Real; { ... } FUNCTION Max(x,y: Real): Real; BEGIN IF x > y THEN Max := x ELSE Max := y; END; FUNCTION GetMaxArrayValue(VAR MyArray: TMyArray): Real; VAR i: integer; lastMax: Real; BEGIN lastMax := MyArray[low(MyArray)]; FOR i := low(MyArray) TO high(MyArray)-1 DO BEGIN GetMaxArrayValue := Max(lastMax, MyArray[i+1]); lastMax := Max(lastMax, MyArray[i+1]); END; END; { ... } mirage228 |
Re: Grösster Wert in einem Array
Eine kleine Verbesserung:
Delphi-Quellcode:
Den Wert mußt Du nur zuletzt an die Funktion zuweisen, und es ist ein kleines bißchen schneller, wenn Du die Berechnung i+1 aus der Schleife herausnimmst. Noch schneller wirst Du, wenn Du Max nicht als Funktion schreibst:
CONST
MAX_ARRAY_SIZE = 5; TYPE TMyArray = Array[1..MAX_ARRAY_SIZE] of Real; { ... } FUNCTION Max(x,y: Real): Real; BEGIN IF x > y THEN Max := x ELSE Max := y; END; FUNCTION GetMaxArrayValue(VAR MyArray: TMyArray): Real; VAR i: integer; lastMax: Real; BEGIN lastMax := MyArray[low(MyArray)]; FOR i := low(MyArray)+1 TO high(MyArray) DO BEGIN lastMax := Max(lastMax, MyArray[i]); END; GetMaxArrayValue := lastMax; END; { ... }
Delphi-Quellcode:
Viele Grüße
BEGIN
if lastMax > MyArray[i] then lastMax := MyArray[i]; END; |
Re: Grösster Wert in einem Array
Hier mein Vorschlag (ungetestet!):
Teste Deine und meine Lösung mal mit dem höchsten Wert im ersten, mittleren, bzw. letzten Element
Delphi-Quellcode:
...:cat:...
FUNCTION GetMaxArrayValue(VAR MyArray: TMyArray): Real;
VAR i: integer; lastMax: Real; BEGIN lastMax := MyArray[low(MyArray)]; FOR i := low(MyArray)+1 TO high(MyArray) DO if MyArray[i] > lastMax then lastMax := MyArray[i]; GetMaxArrayValue := lastMax; END; |
Re: Grösster Wert in einem Array
Wenn Du den generellen Algorithmus, also die Aufgabe, das größte Element in einer sequenziellen geordneten (ich meine nicht sortiert!) Struktur zu finden, meinst, ist die Komplexität O(n)=n. Hier kannst Du nichts verbessern.
Falls Du performateren Code beim Durchsuchen Deines Arrays mit bisher 5 Einträgen haben möchtest, gibt es ein paar Punkte, an denen Du ansetzen könntest.
EDIT: Hi Sakura, das ist ja fast genau das Code-Beispiel dazu! |
Re: Grösster Wert in einem Array
Hallo,
vielen Dank für eure Vorschläge, sie funktionieren einwandfrei. mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr. |
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 by Thomas Breitkreuz