Navigace: Hlavní stránka -> BASIC -> 05 Jednorozměrná pole -> 05.08 Třídění pole - bublinková metoda

MENU

05.08 Třídění pole - bublinková metoda

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ě.