AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ist x in Array enthalten ?

Ein Thema von Neutral General · begonnen am 1. Feb 2005 · letzter Beitrag vom 1. Feb 2005
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Ist x in Array enthalten ?

  Alt 1. Feb 2005, 17:54
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

if 50 in IntegerArray then ... scheint ja nicht zu gehen
Michael
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Ist x in Array enthalten ?

  Alt 1. Feb 2005, 18:00
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
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Ist x in Array enthalten ?

  Alt 1. Feb 2005, 18:02
Bei einem Array geht das nur mit der for-Schleife. Aber vielleicht kannst du was mit einer Menge anfangen (set of).
Thomas H.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Ist x in Array enthalten ?

  Alt 1. Feb 2005, 18:09
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
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Ist x in Array enthalten ?

  Alt 1. Feb 2005, 18:16
Ich verstehe deinen Code leider nicht weil ich Zeiger nicht verstehe
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
Michael
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#6

Re: Ist x in Array enthalten ?

  Alt 1. Feb 2005, 18:18
Zitat von shmia:
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
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:40 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