Jump to content

Sorting algorithms/Cocktail sort with shifting bounds: Difference between revisions

m (Swift - use camel case)
Line 179:
{{works with|A60}}
<lang algol60>begin
comment Sorting algorithms/Cocktail sort with shifting bounds - 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;
begin
integer temp;
temp :=A[i];
A[i] :=A[i+1];
A[i+1]:=temp;
swapped:=true
end swap;
boolean 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;
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}}
1,392

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.