Rapsody: Array vergelichen

Hallo,

ich habe 2 Arrays die mit werten gefühlt sind. Jedes Array hat genau 6 werte (Zuffalszahlen).

Jetzt möchte ich beide Arrays so vergleichen und heraus finden, ob in beiden Arrays irgendwo ein gleicher wert ist.
Ich habe es gedacht, dies mit 6 For-Anweisungen/Schleifen zu machen, in dieser art:

for a = 0 to 5

if array1(0) = array2(a) then ....

nächste:

for a = 0 to 5
 if array1(1) = array2(a) then ....

und so weiter........

sechsmal um wirklich alle werte zu prüfen.
Finde diese Methode aber ehrlich gesagt nicht gerade "praktisch".

Hat jemand eine besser Idee 2 Arrays auf evtl. das solbe vorkommen von Zahlen zu prüfen?

ps: das ganze spielt sich in der Enwticklungsumgebung von einem MDA ab (Windows 2003 & Basic4ppc).

  1. Hallo,

    Jetzt möchte ich beide Arrays so vergleichen und heraus finden, ob in beiden Arrays irgendwo ein gleicher wert ist.

    Wenn Du die Arrays vor dem Vergleichen sortierst, brauchst Du nur einen einzigen Durchgang zum Festellen ob es Unterschiedliche Werte gibt.

    Falls die unsortierten Originale noch gebraucht werden, mach vor dem Sortieren eine Kopie.

    Viele Grüße,
    Hotte

    1. Hallo

      Jetzt möchte ich beide Arrays so vergleichen und heraus finden, ob in beiden Arrays irgendwo ein gleicher wert ist.

      Wenn Du die Arrays vor dem Vergleichen sortierst,

      Aufwand O(n*log(n)) n: Anzahl der Arrayelemente)

      brauchst Du nur einen einzigen Durchgang zum Festellen ob es Unterschiedliche Werte gibt.

      Aufwand O(n)

      Gesamtaufwand: n² * log(n)

      im Gegensatz zu O(n²) bei dem von Rapsody vorgeschlagenen Verfahren.
      Warum also sortieren?

      Freundliche Grüße

      Vinzenz

      1. Moin,

        Gesamtaufwand: n² * log(n)

        Das ist so nicht richtig:
        zuerst wird sortiert   O(n*log(n))
        und danach wird verglichen   O(n),
        also   O(n + n*log(n))
               ----^----
        was besser ist als O(n²) bezogen auf die Komplexität.

        Gruß, Volker

        --
        „I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies."
        - Tony Hoare
        1. Hi,

          mhhh, ich weiß damit jetzt zwar nichts anzufangen, aber ich habe es so gelöst:

            
            
          Sub rando  
           for var1 = 0 to 5  
              user(var1) = rnd(0,49)  
              pc(var1) = rnd(0,49)  
           next  
           zahlUser.Add(user(0) & " " & user(1) & " " & user(2) & " " & user(3) & " " & user(4) & " " & user(5))  
           zahlPc.Add(pc(0) & " " & pc(1) & " " & pc(2) & " " & pc(3) & " " & pc(4) & " " & pc(5))  
            for a = 0 to 5  
              for b = 0 to 5  
                  if user(a) = pc(b) then msgbox("Gefunden wurde die Zahl:" & user(a) & " " & pc(b))  
              next  
            next  
          end sub  
            
            
            
            
          
          
        2. Hallo Volker,

          also   O(n + n*log(n))
                 ----^----
          was besser ist als O(n²) bezogen auf die Komplexität.

          stimmt, mein Fehler.

          Freundliche Grüße

          Vinzenz