Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array of Bit schieben

Array of Bit schieben
28.08.2016 19:22:17
Mr.
Guten Tag zusammen,
ich möchte zwei Arrays stellenweise miteinander vergleichen.
Diese Arrays sind mit null oder eins gefüllt.
Ein Array wird dabei nicht verändert.
Im ersten Durchlauf wird Array 1 mit Array 2 verglichen.
Anschließen wird Array 2 um eine Stelle nach links verschoben und danach wieder mit Array 1 verglichen. Ein Overflow soll dabei wieder an die erste Stelle geschoben werden.
Soweit so gut.
Aktuell arbeite ich mit 2 For-Schleifen. Das Problem ist nun, dass diese Arrays bis zu 1000000 Bits enthalten können. Ist dies der Fall, so rechnet sich VBA fast zu Tode, was ja auch verständlich ist.
Hat einer von Euch eine Idee, bzw. kennt eine Shift-Operation wie in C?
Viele Grüße,
Mr. Visit

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array of Bit schieben
28.08.2016 19:47:24
ransi
Hallo,
Was soll denn passieren wenn die zwei elemente gleich sind (oder verschieden) ?
ransi
AW: Array of Bit schieben
28.08.2016 20:01:59
Mr.
Hallo,
die Bits werden bitweise AND verknüpft.
Die Anzahl der Ergebnisse die eins sind, werden in einem weiteren Array gespeichert.
Mr. Visit
AW: Array of Bit schieben
28.08.2016 20:17:47
ransi
HAllo,
Schau dir mal
System.Collections.Queue an. Das könnte passen.
ICh denke mit der
Dequeue Methode (Entfernt das Objekt am Anfang von Queue und gibt es zurück.)
und der
Enqueue Methode (Fügt am Ende von Queue ein Objekt hinzu.)
kommst du zum Ziel.
ransi
ransi
AW: Array of Bit schieben
30.08.2016 08:13:01
Mr.
Hallo,
ich habe es mit der .Queue versucht. Der Ansatz ist gut.
Was ich bräuchte wäre eine Mischung von .Queue und .Stack.
Ich möchte:
1. Ein statisches Array anlegen
2. Dieses Array nacheinander mit 0 oder 1 füllen
3. Den letzen Wert herausnehmen (Dequeue von .Queue) und zu Beginn einfügen (Push vom .Stack)
Viele Grüße,
Mr. Visit
Anzeige
Die ArrayList kann es
31.08.2016 16:22:51
ransi
Hallo,
Queue war ein Versuch wert...
Die ArrayList kann es. Habe allerdings keine Ahnung wie schnell (oder langsam) das ist...
Schau es dir mal an:
Option Explicit

Sub machs()
    Dim objArrayList As Object
    Dim L As Long, K As Long
    Dim tmp
    Set objArrayList = CreateObject("System.Collections.Arraylist")
    With objArrayList
        'Randomize Timer
        For L = 1 To 1000
            '.Add Round(Rnd, 0) 'Arraylist mit 1+0 füllen
            .Add L
        Next
        For L = 1 To 1000
            tmp = .Item(.Count - 1) 'Letztes Element in tmp merken
            .removeat (.Count - 1) 'Letztes Element entfernen
            .Insert 0, tmp 'tmp am Anfang wieder einfügen
            arr = .toarray 'Kontrolle
            MsgBox Join(arr, vbCrLf) 'Kontrolle
        Next
    End With
End Sub


ransi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige