.
.
, , ( var) ( {*} {**} ). , , a[1], a[0] "", j . , a[0] :
for i:= 2 to N do
if a[i-1]>a[i] then
begin a[0]:= a[i]; {*}
j:= i-1;
while a[j]>a[0] do {**}
begin a[j+1]:= a[j];
j:= j-1;
end;
a[j+1]:= a[0];
end;
, , . N-1 0 .
- "" - (N+1)*N/2, (N-1)*(N+3). , ~N2 ( " ") .
, :
5 3 4 3 6 2 1
, ( , , ):
0 : 5343621
1 : 5343621 1 1+13) 1+24)
2 : 3543621 1 1+1 1+2
3 : 3453621 2 2+1 2+2
4 : 3345621 0 1 0
5 : 3345621 5 5+1 5+2
6 : 2334561 6 6+1 6+2
: 1233456 15 20 25
. .
.
: .
. - , - , "" .
, , "" . , (, , ..) : 11) , .
, :
a[1] | |||||
a[2] | a[3] | ||||
a[4] | a[5] | a[6] | a[7] | ||
a[8] | a[9] | a[10] | a[11] | a[12] | |
, a[i] (1<=i<=N div 2) "" a[2*i] a[2*i+1]. "". , , .
|
|
"". ( ((N div 2)+1)- N-) , . ( ) a[i], a[2*i] a[2*i+1] "" - a[i].
, ( ) , " " - "" :
for i:= (N div 2)downto 1 do
begin j:= i;
while j<=(N div 2) do
begin k:= 2*j;
if (k+1<=N) and (a[k]<a[k+1])
then k:= k+1;
if a[k]>a[j]
then begin x:= a[j];
a[j]:= a[k];
a[k]:= x;
j:= k
end
else break
end
end;