Rendezés

Gyakori feladat, hogy egy tömbben (vektorban) véletlenszerűen elhelyezkedő számok elhelyezkedését úgy kell módosítanunk, hogy a számok növekvő vagy csökkenő sorrendbe legyenek rendezve. A rendezés végére pl. a tömbünk első helyén a legnagyobb, második helyén a második legnagyobb értékű elem található. A sor folytatható az utolsó helyig, ahol a legkisebb értékű szám található.
Rendezetlen tömb: {124331, -5112106}
Rendezés után: 4331,12,11106,  2,-5 }
Egy tömb elemeit rendezhetjük különböző algoritmusok segítségével. Ennek külön tudománya van, alább csak az érettségihez már elégséges, viszont könnyen érthető és tanulható algoritmusokat találsz .
 

Rendezés maximum (minimum) kiválasztással

Az egyszerűbb rendezési algoritmusok közül ezzel a módszerrel minimalizálható a mozgatások száma. Megkeressük a vektor maximális elemét és ezt kicseréljük az elsővel (ha nem épp az maximális). Majd a második elemtől kezdve újra keressük a maximumot a maradék vektorban és (ha szükséges) cseréljük a másodikkal… Ily módon N-1 lépés után a sorozat rendezetté válik. tankönyv, animáció
Dim Tömb() As Integer = {124331, -5112106}
   
        
Dim elem_szám As Integer = UBound(Tömb) 'Az elem_szám megadja, hogy a tömbben mekkora indexig vannak adatok. Ebben az esetben:7 (elemszám 8)
        
Dim maximum_érték, maximum_érték_helye, Tároló, N, i As Integer

        For 
elem_szám To Step -'Beállítjuk (egyesével csökkentve léptetjük) a vizsgálandó résztömb felső határát (N)
            

           
maximum_érték Tömb(0)
            maximum_érték_helye 
0

               
For To 'Helyi maximumot keres az N elemszámú résztömbben
                   
If Tömb(i) > maximum_érték Then
                       
maximum_érték Tömb(i)
                        maximum_érték_helye 
i
                   
End If
                Next

            
Tároló Tömb(N)
            Tömb(N) 
maximum_érték ' 'A vizsgált (rész)tömb legfelső polcára teszi az aktuális maximumot
            
Tömb(maximum_érték_helye) Tároló 'A helyi maximum volt helyére teszi a vizsgált tömb legfelső polcának értékét (csere)

        
Next
        

Rendezett tömb a a végrehajtást követően

Buborékrendezés

A buborékrendezés (angolul: Bubble sort) egy egyszerű algoritmus, amellyel egy véges (nem feltétlenül numerikus) sorozat – vagy számítástechnikai szóhasználattal élve egy tömb – elemei sorba rendezhetők [(n-1)n]/2 számú összehasonlítás elvégzésével, ahol n a sorozat elemeinek számát jelenti. Mivel a lépések száma négyzetesen nő az elemszámmal, ezért ez az algoritmus igen lassú, alkalmazása csak kis méretű tömbök rendezésére javasolt. animáció
Az algoritmus alkalmazásának feltétele, hogy a sorozat elemeihez létezzen egy rendezési reláció.
Az algoritmus két egymásba ágyazott ciklusból áll. A tömb első elemének az indexe az 0, elemeinek száma pedig N. Az elemek itt számok, és a reláció a > (nagyobb).

  CIKLUS I = N-1 TŐL 0 IG
       CIKLUS  J = 0 TŐL I IG
           HA TOMB[J] > TOMB[J+1] AKKOR
               CSERÉLD FEL ŐKET: TOMB[J], TOMB[J+1]
        Next J
   Next N
 

      
 

Példakód :

    Dim Tömb() As Integer = {124331, -5112106}
    

Private Sub 
Rendez()
        
Dim N, J, I, Tároló As Integer

        
= UBound(Tömb) 'Lekérdezi a tömb elemszámát

        
For N - To Step -1
            
For To I
                
If Tömb(J) < Tömb(J + 1Then 'Csökkenő sorrendbe állítja a számsort
                    
Tároló Tömb(J) 'felcseréli Tömb(J) és Tömb(J+1) tartalmát
                    
Tömb(J) Tömb(J + 1)
                    Tömb(J + 
1Tároló
                
End If
            Next
        Next

    End Sub

'Kiíratás ellenőrzéshez
    Private Sub kiírat()
        
Dim As Integer
        Dim 
Prn_sor As String
        Dim 
gr As Graphics = Me.CreateGraphics
        
Dim Betu_Méret As Integer = 14
        
Dim Betu_Típus As New Font("Ariel", Betu_Méret, FontStyle.Regular, GraphicsUnit.World)
        
Dim Nyomtattandó_Sorok_Száma As Integer = 0

        
For To UBound(Tömb)
            Prn_sor 
CStr(Tömb(J))
            gr.DrawString(Prn_sor, Betu_Típus, Brushes.Black, 
4, Nyomtattandó_Sorok_Száma)
            Nyomtattandó_Sorok_Száma 
Nyomtattandó_Sorok_Száma + Betu_Méret + 2
        
Next

    End Sub
    
    Private Sub 
Button1_Click(ByVal sender As System.ObjectByVal As System.EventArgs) Handles Button1.Click
        
Call Rendez()
        
Call kiírat()
    
End Sub

Feladat: Rendezd névsor szerint sorba a tanulókat az alábbi rendezetlen tömbben!

Dim Nevek() As String = {"Altziebler Dániel", "Bori Réka", "Petrás Adél Hajnal", "Vad Anita", "Csikós Tamás", "Dürvanger Zsolt","Fehér Luca" }