The Postal Owl

Logged in: Santa Claus (home)   

Algoritmy a datové struktury 1

Back to the course

DÚ 2: InsertionSort na RAMu

Deadline: 2022-06-22 22:22 (196 days ago)

Pavel Veselý — modified 2022-02-24 22:21 (314 days ago) — reply

Naprogramujte řazení vkládáním (InsertionSort) ve výpočetním modelu RAM. Délka vstupní posloupnosti je v buňce [0]\texttt{[0]} a samotná posloupnost je v buňkách [1]-[[0]]\texttt{[1]-[[0]]}. Program odlaďte v simulátoru od Radka Huška.

(Tento úkol je za plný počet bodů do konce letního zkouškového, nicméně k němu není žádná nápověda.)

Santa Claus — modified 2022-02-25 14:21 (314 days ago) — editreply

Zde připojuji svůj program. Používá registry A až S, přestože počet indexů je malý, a to pro návodná pojmenování. Pro optimalizaci by šly použité registry přejmenovat na A-D a registr L vůbec nepoužívat, tak jako tak je pomocná paměť konstantní.

Instruction pointer má být na začátku nastaven na 1.

# length of the array
L := [0]

# currently sorted part of the array
S := 1

outer_loop:

# if the sorted part is at least as big as lenght (smaller only if L=0)
if L <= S then halt

# currently inserted element index
C := S + 1

# inner loop is the insert procedure

inner_loop:

if C = 1 then goto inner_loop_end

# the element before the inserted one for comparison
D := C - 1
if [C] < [D] then goto swap_c_and_d
goto inner_loop_end
return_from_swap: 

C := C - 1
goto inner_loop

inner_loop_end:

# sorted area increases
S := S + 1

goto outer_loop

swap_c_and_d:

H := [D]
[D] := [C]
[C] := H
goto return_from_swap

Pavel Veselý — 2022-02-28 14:15 (311 days ago) — reply

výborně, pěkný kód

Points: 10.00

New post (You can use Markdown with KaTeX math here)

Preview: