@ECHO OFF

REM **********************************************************************
REM
REM		Skrypt inicjuje tablice, a nastepnie
REM		sortuje wyniki. Skrypt wykonuje algorytm
REM		sortowania przez wstawianie.
REM
REM **********************************************************************

SETLOCAL
SET len=30
ECHO Inicjuje tablice...
FOR /L %%i IN (1,1,%len%) DO SET /A val[%%i]=!RANDOM!
ECHO Tablica przez sortowaniem zawiera elementy:
FOR /L %%i IN (1,1,%len%) DO ECHO val[%%i]=!val[%%i]!
ECHO Nacisnij dowolny klawisz, aby rozpoczac sortowanie...
PAUSE > NUL

REM *********************************************************************
REM 
REM Tutaj nastepuje wlasciwa implementacja algorytmu.
REM Opis zmiennych:
REM 	licznik - zmienna przechowuje aktualne polozenie klucza
REM	tymcz - zmienna przechowuje wartosc zawsze o jeden mniejsza 
REM		od klucza. Od niej rozpoczyna sie porownywanie elementow.
REM	klucz - przechowuje wartosc 'licznik' elementu tablicy.
REM	plus_jeden - zmienna przechowuje zwiekszona o jeden liczbe
REM		     aktualnej iteracji, czyli zmiennej %%i.
REM
REM *********************************************************************

SET licznik=2
:start
IF %licznik% GTR %len% GOTO koniec
SET /A tymcz="%licznik%-1"
SET klucz=!val[%licznik%]!
FOR /L %%i IN (%tymcz%,-1,0) DO SET /A plus_jeden="%%i+1" && IF !val[%%i]! GTR !klucz! (SET val[!plus_jeden!]=!val[%%i]!) ELSE (GOTO wyjdz)
:wyjdz
SET val[!plus_jeden!]=!klucz!
SET /A licznik+=1
GOTO start
:koniec

ECHO Tablica po posortowaniu zawiera elementy:
FOR /L %%i IN (1,1,%len%) DO ECHO val[%%i]=!val[%%i]!
ENDLOCAL