Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
|
|
@ -0,0 +1,31 @@
|
|||
program merge_sort;
|
||||
test := [-8, 241, 9, 316, -6, 3, 413, 9, 10];
|
||||
print(test, '=>', mergesort(test));
|
||||
|
||||
proc mergesort(m);
|
||||
if #m <= 1 then
|
||||
return m;
|
||||
end if;
|
||||
|
||||
middle := #m div 2;
|
||||
left := mergesort(m(..middle));
|
||||
right := mergesort(m(middle+1..));
|
||||
if left(#left) <= right(1) then
|
||||
return left + right;
|
||||
end if;
|
||||
return merge(left, right);
|
||||
end proc;
|
||||
|
||||
proc merge(left, right);
|
||||
result := [];
|
||||
loop while left /= [] and right /= [] do
|
||||
if left(1) <= right(1) then
|
||||
item fromb left;
|
||||
else
|
||||
item fromb right;
|
||||
end if;
|
||||
result with:= item;
|
||||
end loop;
|
||||
return result + left + right;
|
||||
end proc;
|
||||
end program;
|
||||
Loading…
Add table
Add a link
Reference in a new issue