Jak za posortować elementy w Pascalu za pomocą metody bąbelkowej?
Pomimo faktu, że obecnie nie używa się już Pascala, w szkołach nadal go uczą. Miałem problem ze zrozumieniem tej metody z racji na liczbę pętli i samego zagmatwania programu. Jednakże w rzeczywistości napisanie takiego programu nie jest trudne, ani jakoś wielce czasochłonne.
- • Free Pascal Compiler / Turbo Pascal

Pisanie programu rozpoczynamy standardową "procedurą". Jako nazwę programu podajemy np. babelki, ładujemy bibliotekę CRT.
Potrzebujemy zdefiniować pewną stałą. Ja jako stałą, przyjąłem liczbę 10. Będzie to potrzebne do wylosowania "n" liczb. W moim przypadku - dziesięciu liczb.
Następnie potrzebujemy zadeklarować 4 zmienne, w tym jedną tablicę składającą się z "n" elementów, które zadeklarowaliśmy w stałej. Dwie zmienne, które będą niezbędne do sortowania, oraz zmienną pomocniczą.
W programie deklarujemy czyszczenie ekranu, oraz definiujemy, by nie wyłączał się po wykonaniu operacji, a czekał na wciśniecie dowolnego klawisza.

Uruchamiamy funkcję "randomize" w celu późniejszego wylosowania i wyświetlenia wylosowanych liczb. Oraz piszemy pierwszą pętlę.
Jak można zauważyć wyświetli tekst "wyświetlam n wylosowanych liczb". W miejscę "n" zostanie wpisana stała. Następnie pętla for losuje nam "n" liczb z zakresu 1-100.
Zakres możemy oczywiście zmienić w dowolny inny zamieniając 100 na np. 50. Wówczas zakres zmieni się z 1-100 na 1-50.

Teraz przechodzimy do trudniejszego etapu. Jest to już sortowanie elementów tablicy.
Tworzymy kolejną pętlę, zaczyna się ona jednak od 2, nie od jeden z racji na to, że porównywanie elementów zajmuje o jedną czynność mniej (jeśli tak można to opisać).
Przyjmujemy, że zmienna i = j. Następnie uruchomiona zostaje pętla repeat z instrukcją warunkową IF. Czynność porównywania elementów zostanie wykonana N-1 razy by porównać wszystkie elementy tablicy.
Wiemy, że "i" wykonane zostało 10 razy, "j" przyjmuje więc tą wartość, a pętla ma zakończyć działanie w momencie, gdy "j" przyjmie wartość 1.

Teraz pozostaje nam jedynie wyświetlić posortowaną tablicę "n" elementową.
Uwagi i spostrzeżenia
- •Gotowy kod/program znaleźć można na: http://blog.keepmind.eu/sortowanie-babelkowe-w-pascalu.html
Komentarze
Ostatnio zmieniony: 2013-04-14 15:42:08
Dodaj komentarz