Sorting algorithms/Cocktail sort: Difference between revisions
Content added Content deleted
PatGarrett (talk | contribs) (→{{header|360 Assembly}}: a correction) |
PatGarrett (talk | contribs) (→{{header|ALGOL 60}}: Section added) |
||
Line 176: | Line 176: | ||
Put_Line(Data); |
Put_Line(Data); |
||
end Cocktail_Sort_Test;</lang> |
end Cocktail_Sort_Test;</lang> |
||
=={{header|ALGOL 60}}== |
|||
{{works with|A60}} |
|||
<lang algol60>begin |
|||
comment Sorting algorithms/Cocktail sort - Algol 60; |
|||
integer array A[1:20]; integer nA; |
|||
procedure cocktailsort(lb,ub); |
|||
value lb,ub; integer lb,ub; |
|||
begin |
|||
integer i,lbx,ubx; |
|||
boolean swapped; |
|||
lbx:=lb; ubx:=ub-1; swapped :=true; |
|||
for i:=1 while swapped do begin |
|||
procedure swap(i); value i; integer i; |
|||
begin |
|||
integer temp; |
|||
temp :=A[i]; |
|||
A[i] :=A[i+1]; |
|||
A[i+1]:=temp; |
|||
swapped:=true |
|||
end swap; |
|||
swapped:=false; |
|||
for i:=lbx step 1 until ubx do if A[i]>A[i+1] then swap(i); |
|||
if swapped |
|||
then begin |
|||
for i:=ubx step -1 until lbx do if A[i]>A[i+1] then swap(i); |
|||
ubx:=ubx-1; lbx:=lbx+1 |
|||
end |
|||
end |
|||
end cocktailsort; |
|||
procedure inittable(lb,ub); |
|||
value lb,ub; integer lb,ub; |
|||
begin |
|||
integer i; |
|||
for i:=lb step 1 until ub do A[i]:=entier(rand*100) |
|||
end inittable; |
|||
procedure writetable(lb,ub); |
|||
value lb,ub; integer lb,ub; |
|||
begin |
|||
integer i; |
|||
for i:=lb step 1 until ub do outinteger(1,A[i]); |
|||
outstring(1,"\n") |
|||
end writetable; |
|||
nA=20; |
|||
inittable(1,nA); |
|||
writetable(1,nA); |
|||
cocktailsort(1,nA); |
|||
writetable(1,nA) |
|||
end </lang> |
|||
{{out}} |
|||
<pre> |
|||
6 92 61 64 73 3 81 28 62 67 83 33 77 14 16 23 47 19 33 78 |
|||
3 6 14 16 19 23 28 33 33 47 61 62 64 67 73 77 78 81 83 92 |
|||
</pre> |
|||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |