Я написал процедуру сортировки вставки! Помогите её переделать в процедуру сортировки бинарными вставками!!
Procedure sortirovka_vstavkami(a:mas); var i,x,y,j:integer; Begin for i:=2 to n do begin x:=a[i]; a[0]:=x; j:=i; while x<a[j-1] do begin y:=y+1; a[j]:=a[j-1]; j:=j-1; end; a[j]:=x; end; writeln('Sortirovka vstavkami'); for i:=1 to n do write(a[i]:5); writeln; writeln('Chislo sravnenii:',y); End;
volvo
13.03.2007 0:10
Зачем что-то ПЕРЕделывать, если можно взять уже сделанное?
Program sortirovka; const n=8; type mas=array[0..n] of integer; var a:mas; i,j:integer; Procedure binarnie_vstavki(a:mas); var x,i,j,y,l,m,r,v,k:integer; Begin i:=2; repeat l:=1; r:=i-1; m:=(l+r) div 2; while l<>m do begin if a[m-1]>a[i-1] then r:=m else l:=m; m:=(l+r) div 2; end; if a[l-1]<a[i-1] then begin if a[i-1]>a[r-1] then l:=r+1 else l:=r; end; k:=i; v:=a[i-1]; while k>l do begin a[k-1]:=a[k-2]; k:=k-1; end; a[l-1]:=v; i:=i+1; Until not (i<=n); writeln('Sortirovka binarnimi vstavkami'); for i:=1 to n do write(a[i]:5); writeln; writeln('Chislo sravnenii:',y); End; Begin randomize; writeln('Isxodnii massiv:'); for i:=1 to n do begin a[i]:=random(50)-25; write(a[i]:5); end; writeln; binarnie_vstavki(a); readln; End.