Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Zalanius

    tag

    válasz Bobrooney #3042 üzenetére

    Kipróbáltam két oszloppal, 10 ezer sorban, de nehezítésképpen úgy, hogy az első 5000-ben csak X volt mindenhol, és az egyik gyümölcsnél később is csak X volt. Nem is igazán mérhető a futásidő, fél másodpercnél is kevesebb. Tehát vagy rengeteg oszlopod lehet, vagy sok százezer sor, vagy még egyéb tényezők. De a 10 perc mindenképpen túlzás.

    Tudom h nem kértél konkrétumot, de csak bemásolok ide egy rövidke scriptet, egyszerű megközelítésben, valami támpontot adhat azért.

    Option Base 1

    Sub t()

    Dim gimilc()
    Dim vannemX()
    Dim n%, i%
    Dim g As String

    n = 1
    ReDim Preserve gimilc(n)
    ReDim Preserve vannemX(n)

    gimilc(1) = Cells(2, 1).Value
    vannemX(1) = False
    If Cells(2, 2).Value <> "X" Then
    vannemX(1) = True
    End If
    For i = 3 To 10000
    g = Cells(i, 1).Value

    Dim gindex%
    gindex = -1
    For j = 1 To n
    If gimilc(j) = g Then
    gindex = j
    Exit For
    End If
    Next

    If gindex = -1 Then
    n = n + 1
    ReDim Preserve gimilc(n)
    ReDim Preserve vannemX(n)
    gimilc(n) = g
    vannemX(n) = False
    If Cells(i, 2).Value <> "X" Then vannemX(n) = True
    Else
    If vannemX(gindex) = False Then
    If Cells(i, 2).Value <> "X" Then vannemX(gindex) = True
    End If
    End If
    Next

    End Sub

  • csaszizoltan

    csendes tag

    válasz Bobrooney #3042 üzenetére

    Szia!

    Gondolom az egyes celláinak elérése nem gyors vagy minden X találat után indítasz egy új átfésülést, ami fölösleges ezért
    Rakd tömbbe a gyümölcsneveket (ha sokféle van, kb 100-nál több akkor bináris fába, ahol a fa egyes mutatói még két tömbben helyezkednek el tömbindexként) és másik két ugyanakkora tömbbe, hogy van X benne és van nem X benne. Ez az algoritmus egyszer fog végigfutni a munkalapon.
    Érdekelne majd a "gyümölcsökre" megvalósított algoritmus, hogy beleszólhassak a gyorsabb futás érdekében.:)
    Üdv:)

Új hozzászólás Aktív témák