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
Kätevä funktio.
Oletko muuten tutustunut muihin lajittelutapoihin? Jos taulukko on suuri, kuplalajittelun sijasta kannattaa käyttää jotain nopeampaa menetelmää.
En. Hmm... GOOGLE! :D
edit: äh, ei noita jaksa. Jos jotain muuta kiinnostaa niin siitä vaan :P
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
User137, joo... taisin olla vähän väsynyt tota tehdessä. Saahan sen ite muuttaa omaan koodiin miten haluaa.
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
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?
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
Aihe on jo aika vanha, joten et voi enää vastata siihen.