Sort disjoint sublist: Difference between revisions

Added solution for Action!
No edit summary
(Added solution for Action!)
Line 41:
<pre>
[7, 0, 5, 4, 3, 2, 1, 6]
</pre>
 
=={{header|Action!}}==
<lang Action!>PROC PrintArray(INT ARRAY a INT size)
INT i
 
Put('[)
FOR i=0 TO size-1
DO
IF i>0 THEN Put(' ) FI
PrintI(a(i))
OD
Put(']) PutE()
RETURN
 
BYTE FUNC InSet(INT ARRAY s INT size INT v)
INT i
 
FOR i=0 TO size-1
DO
IF s(i)=v THEN
RETURN (1)
FI
OD
RETURN (0)
 
PROC Sort(INT ARRAY arr INT arrSize
INT ARRAY ind INT indSize)
INT i,j,minpos,tmp
 
FOR i=0 TO arrSize-2
DO
IF InSet(ind,indSize,i) THEN
minpos=i
FOR j=i+1 TO arrSize-1
DO
IF InSet(ind,indSize,j)=1 AND arr(minpos)>arr(j) THEN
minpos=j
FI
OD
IF minpos#i THEN
tmp=arr(i)
arr(i)=arr(minpos)
arr(minpos)=tmp
FI
FI
OD
RETURN
 
PROC Test(INT ARRAY arr INT arrSize
INT ARRAY ind INT indSize)
PrintE("Array before sort:")
PrintArray(arr,arrSize)
PrintE("Indices:")
PrintArray(ind,indSize)
Sort(arr,arrSize,ind,indSize)
PrintE("Array after sort:")
PrintArray(arr,arrSize)
RETURN
 
PROC Main()
INT ARRAY
arr(8)=[7 6 5 4 3 2 1 0],
ind(3)=[6 1 7]
Test(arr,8,ind,3)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Sort_disjoint_sublist.png Screenshot from Atari 8-bit computer]
<pre>
Array before sort:
[7 6 5 4 3 2 1 0]
Indices:
[6 1 7]
Array after sort:
[7 0 5 4 3 2 1 6]
</pre>
 
Anonymous user