Сортировка слияниями
Как сортировать массив сортировкой слияниями?
const n=10; var a,c:array[1..n] of integer; t:integer; ... Procedure Sliv(a1,k,b:integer); {вспомогательная процедура} var i,j,w:integer; begin w:=0; i:=a1; j:=k+1; while (i<=k) and (j<=b) do if (a[j]>a[i]) then begin inc(w); c[w]:=A[i]; inc(i); end else begin inc(w); c[w]:=A[j]; inc(j); end; for i:=i to k do begin inc(w); c[w]:=A[i]; end; for j:=j to b do begin inc(w); c[w]:=A[j]; end; w:=0; for i:=a1 to b do begin inc(w); A[i]:=c[w]; end; end; Procedure Sort_Sliv(b,e:integer); {sort sliv} var l:integer; begin if (e-b>1) then begin l:=(b+e) div 2; if (l-b>0) then Sort_Sliv(b,l); if (e-l>0) then Sort_Sliv(l+1,e); Sliv(b,l,e); end else if (e-b=1) then if A[b]>A[e] then begin t:=A[b]; A[b]:=A[e]; A[e]:=t; end; end; Вызов: Sort_Sliv(1,n);