'Primer 12a: glavna procedura (izbor inicijalizacije niza i algoritma sortiranja)
Sub testSort()
    
    'Deklaracija promenljivih
    Dim niz() As Integer
    Dim n As Integer 'Dimenzija niza
    Dim sniz As String 'Zapis niza u vidu niske
    Dim sPoruka As String, sOdgovor As String
    Dim iOdgovor As Integer
    'Ulaz
    n = InputBox("Unesite broj elemenata niza")
    ReDim niz(n)
    iOdgovor = MsgBox("Zelite li da racunar sam generise niz", vbYesNo)
    If iOdgovor = vbYes Then
        'racunar na osnovu broja elemenata sam generise niz (psedoslucajnih) celih brojeva
        initSlucajanNiz niz, n
    Else
        'a mogli smo i preko tastature, ali to bi islo sporo (unosenje jednog po jednog elementa)
        unosNiza niz, n
    End If
    
    'Ispisivanje niza
    sniz = ispisNiza(niz, n)
    If sniz = "" Then
        MsgBox "Niz je prazan"
        Exit Sub
    Else
        MsgBox "Polazni niz: " & sniz
    End If
    'Sortiranje niza moze da se izvede na razne nacine
    sPoruka = "Izaberite kako cete sortirati niz:" & vbNewLine
    sPoruka = sPoruka & vbTab & "S (selection sort ili sortiranje izborom)" & vbNewLine
    sPoruka = sPoruka & vbTab & "I (insertion sort ili sortiranje umetanjem)" & vbNewLine
    sPoruka = sPoruka & vbTab & "B (bubble sort ili ?)" & vbNewLine
    sOdgovor = InputBox(sPoruka)
    
    Select Case sOdgovor
        Case "S"
             selectionSort2 niz, n
        Case "I"
             insertionsort niz, n
        Case "B"
             bubblesort niz, n
        Case Else
             MsgBox "Nepostojeca opcija. Kraj"
             End
    End Select
    
    'Izlaz: Ispisivanje sortiranog niza
    sniz = ispisNiza(niz, n) 'Ovo radimo ponovo jer se niz promenio
    MsgBox "Sortirani niz: " & vbNewLine & sniz
End Sub

Sub initSlucajanNiz(niz() As Integer, ByVal n As Integer)
    Dim i As Integer
    Randomize (Minute(Time()) * Second(Time()))
    For i = 1 To n
        'n > 0 generise sledeci broj, ostali ponavljaju vec generisane brojeve
        'Rnd(n) je generisani broj izmedju 0 i 1, 0 <= Rnd(n) < 1
        'mnozenjem sa 99 dobijamo broj izmedju 0 i 99, 0 <= Rnd(n)*99 < 99
        'CInt vrsi konverziju u ceo broj i vrsi zaokruzivanje, tako da je rezultat moze da ukljuci i 99
        'tj. 0 <= CInt(Rnd(n) * 99) <= 99
        niz(i) = CInt(Rnd(n) * 99)
    Next i
End Sub