home *** CD-ROM | disk | FTP | other *** search
-
-
- { --> 178}
-
- procedure {shell} sort(var a: ary; n: integer);
- { Shell-Metzner sort }
- { Adapted from 'Programming in pascal',
- P. Grogono, Addison-Wesley, 1980 }
-
- var done : boolean;
- jump,i,j: integer;
-
- procedure swap(var p,q: real);
- var hold : real;
-
- begin
- hold:=p;
- p:=q;
- q:=hold
- end; { swap }
-
- begin
- jump:=n;
- while jump>1 do
- begin
- jump:=jump div 2;
- repeat
- done:=true;
- for j:=1 to n do
- begin
- i:=j+jump;
- if a[j]>a[i] then
- begin
- swap(a[j],a[i]);
- done:=false
- end { if }
- end { for }
- until done
- end { while }
- end; { SORT }
-
-