'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