Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ist x in Array enthalten ? (https://www.delphipraxis.net/39369-ist-x-array-enthalten.html)

Neutral General 1. Feb 2005 17:54


Ist x in Array enthalten ?
 
Ich muss schnell (!) herausfinden ob ein Array einen bestimmten Wert beinhaltet.
normalerweise geht das ja mit for-schleifen aber das ist zuuu langsam ...
Und sowas wie

Delphi-Quellcode:
if 50 in IntegerArray then ...
scheint ja nicht zu gehen :(

Dax 1. Feb 2005 18:00

Re: Ist x in Array enthalten ?
 
Du wirst um eine for-Schleife nicht herumkommen.. es sei denn, du wandelst dein Array in einen String um und suchst in dem String nach deinem Wert, aber das is noch lahmer :mrgreen:

KLS 1. Feb 2005 18:02

Re: Ist x in Array enthalten ?
 
Bei einem Array geht das nur mit der for-Schleife. Aber vielleicht kannst du was mit einer Menge anfangen (set of).

shmia 1. Feb 2005 18:09

Re: Ist x in Array enthalten ?
 
Zitat:

Zitat von Neutral General
Ich muss schnell (!) herausfinden ob ein Array einen bestimmten Wert beinhaltet.
normalerweise geht das ja mit for-schleifen aber das ist zuuu langsam ...
Und sowas wie
Delphi-Quellcode:
if 50 in IntegerArray then ...
scheint ja nicht zu gehen :(

Mengenoperation sind auf Mengen mit max 256 Elementen beschränkt. (Also Mengen kannst du vergessen)
Das Suchen in einem Array lässt sich massiv Beschleunigen, wenn man mit Zeigern arbeitet.
Delphi-Quellcode:
// ungetestet, da direkt hingeschrieben
function SearchArray(const a:array of Integer; sv:integer):Integer;
var
   p : ^integer;
begin
   p := @a[Low(a)];
   for i := Low(a) to High(a) do
   begin
      if p^ = sv then
      begin
         Result := i;
         Exit;
      end;
      Inc(p);
   end;
   Result := -1; // nix gfunden
end;

Neutral General 1. Feb 2005 18:16

Re: Ist x in Array enthalten ?
 
Ich verstehe deinen Code leider nicht weil ich Zeiger nicht verstehe :mrgreen:
Deswegen werde ich ihn auch nicht einsetzten :(
Naja ich hab die Frage wegen einer Simulation gestellt die ich gerade am programmieren bin und wenn der PC da rumrechnet dann wird das Ergebnis verfälscht und das ist wohl nicht Sinn einer Simulation :mrgreen:

Oxmyx 1. Feb 2005 18:18

Re: Ist x in Array enthalten ?
 
Zitat:

Zitat von shmia
Zitat:

Zitat von Neutral General
Ich muss schnell (!) herausfinden ob ein Array einen bestimmten Wert beinhaltet.
normalerweise geht das ja mit for-schleifen aber das ist zuuu langsam ...
Und sowas wie
Delphi-Quellcode:
if 50 in IntegerArray then ...
scheint ja nicht zu gehen :(

Mengenoperation sind auf Mengen mit max 256 Elementen beschränkt. (Also Mengen kannst du vergessen)
Das Suchen in einem Array lässt sich massiv Beschleunigen, wenn man mit Zeigern arbeitet.
Delphi-Quellcode:
// ungetestet, da direkt hingeschrieben
function SearchArray(const a:array of Integer; sv:integer):Integer;
var
   p : ^integer;
begin
   p := @a[Low(a)];
   for i := Low(a) to High(a) do
   begin
      if p^ = sv then
      begin
         Result := i;
         Exit;
      end;
      Inc(p);
   end;
   Result := -1; // nix gfunden
end;

Brauchst du gar nicht machen, das macht der Delphi-Compiler in schnellen Schleifen automatisch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 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