Sorting algorithms/Cocktail sort: Difference between revisions

m (Rust - replace Ord by PartialOrd)
Line 181:
<lang algol60>begin
comment Sorting algorithms/Cocktail sort - Algol 60;
integer array A[1:20]; integer nA;
nA:=20;
procedure cocktailsort(lb,ub);
value lb,ub; integer lb,ub;
begin
integer i,lbx,ubxarray A[1:nA];
 
boolean swapped;
lbx:=procedure cocktailsort(lb; ubx:=,ub-1; swapped :=true);
forvalue i:=1lb,ub; whileinteger swapped do beginlb,ub;
begin
procedure swap(i); value i; integer i,lbx,ubx;
beginboolean swapped;
lbx:=lb; ubx:=ub-1; swapped integer temp:=true;
for i:=1 while swapped tempdo :=A[i];begin
A[i] :=A[i+1];
A[i+1]:=temp;
swapped:=true
end swap;
swapped:=false procedure swap(i); value i; integer i;
for i:=lbx step 1 until ubx do if A[i]>A[i+1] then swap(i);begin
if swapped integer temp;
then begin temp :=A[i];
for i:=ubx step -1 until lbx do if A[i]> :=A[i+1] then swap(i);
ubx:=ubx-1; lbx:=lbx A[i+1]:=temp;
swapped:=true
A[i+1]:=tempend swap;
end swap;
A[i] swapped:=A[i+1]false;
for i:=lblbx step 1 until ububx do if A[i]:=entier>A[i+1] then swap(rand*100i);
boolean 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;
end cocktailsort;
procedure cocktailsortinittable(lb,ub);
procedure inittable( value lb,ub; integer lb,ub);
value lb,ub; integer lb,ub; begin
value lb,ub; integer lb,ubi;
begin
for i:=lb step 1 until ub do A[i]:=entier(rand*100)
integer i;
end inittable;
for i:=lb step 1 until ub do A[i]:=entier(rand*100)
end inittable;
procedure writetable(1lb,nAub);
procedure writetable( value lb,ub; integer lb,ub);
value lb,ub; integer lb,ub; begin
integer i;
begin
for i:=lb step 1 until ub do outinteger(1,A[i]);
integer i;
for i:=lb step 1 until ub do outintegeroutstring(1,A[i]"\n");
outstring(1,"\n")end writetable;
end writetable;
nA:=20;
inittable(1,nA=20);
inittable writetable(1,nA);
writetable cocktailsort(1,nA);
cocktailsort writetable(1,nA);
beginend
writetable(1,nA)
end </lang>
{{out}}
Line 236 ⟶ 241:
3 6 14 16 19 23 28 33 33 47 61 62 64 67 73 77 78 81 83 92
</pre>
 
 
=={{header|ALGOL 68}}==
1,392

edits