gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/03. Shaker sort/TopSpeed & XDS/SHAKER.MOD b/03. Shaker sort/TopSpeed & XDS/SHAKER.MOD
--- /dev/null
@@ -0,0 +1,80 @@
+MODULE Shaker;\r
+\r
+ FROM IO IMPORT\r
+ WrCard, WrStr, RdCard, WrLn, OK;\r
+\r
+ CONST\r
+ Max = 10;\r
+\r
+ TYPE\r
+ Indeks = [1 .. Max];\r
+ NizTip = ARRAY Indeks OF CARDINAL;\r
+\r
+ VAR\r
+ Niz: NizTip;\r
+\r
+ PROCEDURE Unos(VAR Niz: NizTip);\r
+ VAR\r
+ i: Indeks;\r
+ BEGIN\r
+ FOR i:= 1 TO Max DO\r
+ REPEAT\r
+ WrStr('Unesite ');\r
+ WrCard(i, 2);\r
+ WrStr('. clan niza: ');\r
+ Niz[i]:= RdCard();\r
+ WrLn;\r
+ UNTIL OK;\r
+ END;\r
+ END Unos;\r
+\r
+ PROCEDURE Ispis(VAR Niz: NizTip);\r
+ VAR\r
+ i: Indeks;\r
+ BEGIN\r
+ FOR i := 1 TO Max - 1 DO\r
+ WrCard(Niz[i], 1);\r
+ WrStr(', ');\r
+ END;\r
+ WrCard(Niz[Max], 1);\r
+ END Ispis;\r
+\r
+ PROCEDURE ShakerSort(VAR Niz: NizTip);\r
+ VAR\r
+ Levi, Desni, i, ZadnjiMenjan: Indeks;\r
+ Temp: CARDINAL;\r
+ BEGIN\r
+ Levi:= 2;\r
+ Desni:= Max;\r
+ ZadnjiMenjan:= Max;\r
+ REPEAT\r
+ FOR i:= Desni TO Levi BY -1 DO\r
+ IF Niz[i - 1] > Niz[i] THEN\r
+ Temp:= Niz[i - 1];\r
+ Niz[i - 1]:= Niz[i];\r
+ Niz[i]:= Temp;\r
+ ZadnjiMenjan:= i;\r
+ END;\r
+ END;\r
+ Levi:= ZadnjiMenjan + 1;\r
+ FOR i:= Levi TO Desni DO\r
+ IF Niz[i - 1] > Niz[i] THEN\r
+ Temp:= Niz[i - 1];\r
+ Niz[i - 1]:= Niz[i];\r
+ Niz[i]:= Temp;\r
+ ZadnjiMenjan:= i;\r
+ END;\r
+ END;\r
+ Desni:= ZadnjiMenjan - 1;\r
+ UNTIL Levi > Desni;\r
+ END ShakerSort;\r
+\r
+BEGIN\r
+ Unos(Niz);\r
+ WrStr('Unesen niz: ');\r
+ Ispis(Niz);\r
+ WrLn;\r
+ WrStr('Sortiran niz: ');\r
+ ShakerSort(Niz);\r
+ Ispis(Niz);\r
+END Shaker.\r