Zadání:
Sestavte program, který seřadí pole náhodných čísel bublinkovou metodou.
Řešení:
Nejprve pomocí cyklu FOR naplníme pole o deseti prvcích náhodnými čísly z intervalu 0..99 a pole vytiskneme.
Poté pomocí cyklu DO ... LOOP UNTIL otestujeme, zda je pole setříděné. Na jeho začátku vložíme do proměnné
setrideno hodnotu TRUE (předpokládáme, že pole je setříděné). Poté pomocí cyklu FOR porovnáme všechny
dvojice sousedících prvků, zda jsou setříděné. Pokud ne, vyměníme vzájemně jejich hodnoty a zároveň vložíme
do proměnné setrideno hodnotu FALSE (nastala výměna, pole ještě není setříděné). V podmínce cyklu
DO ... LOOP UNTIL otestujeme, zda v proměnné setrideno zůstala hodnota TRUE (nenastala žádná výměna,
pole je setříděné) nebo FALSE (nastala výměna, pole je nutné projít ještě jednou).
Na konci programu setříděné pole vytiskneme.
Module Module1
Sub Main()
Dim pole(9), i, pom As Integer
Dim setrideno As Boolean
Randomize(Timer)
For i = 0 To 9
pole(i) = Int(Rnd() * 100)
Next
Console.WriteLine("Puvodni pole: ")
For i = 0 To 9
Console.Write("{0} ", pole(i))
Next
Do
setrideno = True
For i = 0 To 8
If pole(i) > pole(i + 1) Then
pom = pole(i)
pole(i) = pole(i + 1)
pole(i + 1) = pom
setrideno = False
End If
Next
Loop Until setrideno = True
Console.WriteLine()
Console.WriteLine("Setridene pole: ")
For i = 0 To 9
Console.Write("{0} ", pole(i))
Next
Console.ReadLine()
End Sub
End Module
program ke stažení
Pro studenty:
V cyklu FOR mění řídící proměnná
i hodnoty v intervalu 0..8, protože pole má sice 10 prvků, ovšem na porovnávání
máme pouze 9 dvojic.
Tento program třídí pole vzestupně, zamyslete se, jakou malou úpravou programu by třídění probíhalo sestupně.