Sortowanie „bąbelkowe” w Pascalu

Dziwnym jest, że wciąż w szkołach uczą tego języka. Dla mnie jest on średnio zrozumiały, a zarazem nie jest w ogóle ciekawy. Cóż… Niebawem mam zaliczenie z programowania, a bacząc na to, że jednym z tematów jest „sortowanie tablicy „x” elementowej metodą bąbelkową” postanowiłem się co nieco wziąć za napisanie takiego programu. Bynajmniej nie chciałem szukać w sieci rozwiązań, bo nie zrozumiałbym zawartych treści (programistycznego bełkotu). Przysiadłem kilka dni, nagłowiłem się sporo i… napisałem w końcu program sortujący tablicę „x” elementową.

Potomnym się może nie przydać, ale choćby dla ludzi z mojego roku – tak ;). Może da się to prościej napisać, może… moja wiedza nie pozwala jednak na bardziej zawiłe/krótsze rozwiązania. Mam nadzieję (ja to wiem), że w następnym semestrze z C++ będzie ciekawiej i prościej niż z tym Pascalem. Nie dość, że to bezużyteczny przeżytek… to nadal każą się tego uczyć, eh, eh, eh…

Co musimy wiedzieć nim zaczniemy?

{{Pascal}} nie potrafi sam z siebie posortować talicy, trzeba go zmusić do tego deklarując kilka zmiennych. Niezbędne nam będzie zadeklarowanie pewnej stałej, oraz trzech zmiennych. Dwie ze zmiennych są potrzebne do przechowania elementów, a trzecia jest pomocnicza, ale również niezbędna. Sortowanie elementów odbywa się na zasadzie porównania elementów (instrukcja warunkowa) N-1 razy. Jeśli element A jest mniejszy od B, przechowuje go w pamięci, potem patrzy, czy B < C, itd. Porównanie elementów odbywa się o jeden raz mniej niż tablica ma elementów, co można przyuważyć sortując tablicę np. 3 elementową.

A<B – tak. Pisz A.
B<C – nie. Pisz C.
Brak więcej elementów do porównania. Pisz B.

Kod programu

Jest to wersja bez żadnych bajerów, robi po prostu, co ma robić i na tym jej działanie się kończy :). Na końcu wpisu do pobrania jest troszkę odpicowana przeze mnie wersja, jednakże bez kodu źródłowego.

  1. {
  2. Autor: Filip "inzaghi89" Cierpich
  3. www: http://keepmind.eu
  4. Licencja: GPL
  5. }
  6.  
  7. program babelki;
  8. uses crt;
  9. const
  10.   n=10;
  11.  
  12. var
  13.   tab : array[1..n] of integer;
  14.   i,j,pom : integer;
  15.  
  16. begin
  17. clrscr;
  18. randomize;
  19.  
  20.   write(' Wyswietlam ',n,' wylosowanych liczb: ');
  21.  
  22.   for i:=1 to n do
  23.     begin
  24.       tab[i]:=random(100)+1;
  25.       write(tab[i],' ');
  26.     end;
  27.  
  28.   for i:=2 to n do
  29.     begin
  30.       j:=i;
  31.  
  32.       repeat
  33.         if (tab[j]<tab[j-1]) then
  34.           begin
  35.             pom:=tab[j];
  36.             tab[j]:=tab[j-1];
  37.             tab[j-1]:=pom;
  38.           end;
  39.         dec(j);
  40.       until(j=1);
  41.     end;
  42.  
  43.   writeln;writeln;
  44.   write(' Wyswietlam posortowane liczby: ');
  45.   for i:=1 to n do
  46.     begin
  47.       write(tab[i],' ');
  48.     end;
  49.  
  50. repeat until keypressed;
  51. end.

Pobierz gotowy program: Kliknij, by pobrać!

Ten wpis został opublikowany w kategorii Programowanie i oznaczony tagami , , . Dodaj zakładkę do bezpośredniego odnośnika.

4 odpowiedzi na Sortowanie „bąbelkowe” w Pascalu

  1. PiotrLegnica pisze:

    > Mam nadzieję (ja to wiem), że w następnym semestrze z C++ będzie ciekawiej i prościej niż z tym Pascalem.

    C++ prostsze niż Pascal? Bawhahahah.

  2. Yagbu pisze:

    Pojęcie o programowaniu nagle całkowicie się zmienia, gdy trzeba się go uczyć. Wiem, co u mnie było z Cpp, chodzenie na zaliczenia po 3 razy ;), aż zrozumiałem. Swoje trzeba przeboleć, ale dasz radę ;P.

  3. marta pisze:

    co znaczy dec(j) ?

  4. Marta pisze:

    okej juz to zrozumialam :) ^ (poprzedni wpis)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *