Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Bubblesort

Sivun loppuun

sooda [27.07.2004 18:29:28]

#

Heetkone. Tää ei taida edes olla kupla- vaan vaihtojärjestäminen. Emmä tiijä.

Bubblesort, kuplajärjestäjä(:D), eli yksinkertainen järjestyshomma. Järjestää taulun osat aakkosjärjestykseen. Et usko miten paljon tästä on aikojen saatossa ollut mulle hyötyä :P

Sub KuplaSorttaa(taulu())

    For i = 0 To UBound(taulu) 'käydään läpi kaikki taulun osat
        For j = i To UBound(taulu) 'verrataan jokaiseen jäljellä olevaan
            If taulu(i) > taulu(j) Then 'jos pitää vaihtaa niin vaihdetaan
                tempi = taulu(j)
                taulu(j) = taulu(i)
                taulu(i) = tempi
            End If
        Next
    Next

End Sub

jos et usko että toimii niin koklaa tän kanssa:

Private Sub Form_Load()

    Dim taulu()
    taulu = Array("ö", "b", "a", "d", "c", "ä", "1")
    KuplaSorttaa taulu()
    For i = 0 To UBound(taulu)
        homma = homma & taulu(i) & vbCrLf
    Next
    MsgBox homma, vbInformation, "Sortattu oikein!"

End Sub

hunajavohveli [30.07.2004 11:27:59]

#

Kätevä funktio.

Antti Laaksonen [30.07.2004 23:55:11]

#

Oletko muuten tutustunut muihin lajittelutapoihin? Jos taulukko on suuri, kuplalajittelun sijasta kannattaa käyttää jotain nopeampaa menetelmää.

sooda [31.07.2004 09:56:40]

#

En. Hmm... GOOGLE! :D
edit: äh, ei noita jaksa. Jos jotain muuta kiinnostaa niin siitä vaan :P

User137 [03.08.2004 15:46:43]

#

Tehdäänpäs tuosta funktiosta hieman nopeampi ja laitetaan +1 toiseen for-silmukkaan, jotta samaa solua ei verrattaisi itseensä. Toisekseen UBound(taulu) funktion arvon voisi laskea alussa muuttujaan ettei sitä laskettaisi erikseen joka kierroksella.

Sub KuplaSorttaa(taulu())

    For i = 0 To UBound(taulu) 'käydään läpi kaikki taulun osat
        For j = i+1 To UBound(taulu) 'verrataan jokaiseen jäljellä olevaan
            If taulu(i) > taulu(j) Then 'jos pitää vaihtaa niin vaihdetaan
                tempi = taulu(j)
                taulu(j) = taulu(i)
                taulu(i) = tempi
            End If
        Next
    Next

End Sub

sooda [03.08.2004 15:51:28]

#

User137, joo... taisin olla vähän väsynyt tota tehdessä. Saahan sen ite muuttaa omaan koodiin miten haluaa.

JoreSoft [04.08.2004 12:18:28]

#

Quick sort on vielä paljon nopeampi tapa... hain tämän hieman nopeasti muuttamatta taulukkojen nimiä tai muuta...

Private Sub Qsort()
Dim A%,I%,J%
  For I = 1 To 10
    For J = 10 To I Step -1
      If Arvottu(J - 1, 0) > Arvottu(J, 0) Then
        A = Arvottu(J, 0)
        Arvottu(J, 0) = Arvottu(J - 1, 0)
        Arvottu(J - 1, 0) = A
      End If
    Next J
  Next I
End Sub

Puhveli [20.04.2005 21:42:07]

#

Ja nakit :p Yritin soveltaa tuota QBasicille :D Se ei ollut ihan noin kätevää, joten pitää viritellä hieman...
Edit: eikun.. mitäs höpäjän :D Toimiihan tuo, ja miksi ei toimisi?

Dyer [17.07.2006 08:03:47]

#

lainaus:

Quick sort on vielä paljon nopeampi tapa...

jos tää on näistä tavoista se nopein nii en haluut tietää et miten hitaasti noi muut lajittelee 10 000*6 taulukon... :F
täl meinaan menee sellane puol minuuttia... ja melkee kaataa mun koneen o_0


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta