.
. , :
- , ;
- . , . , , ;
- .
:
- ;
- ;
- .
:
Const nmax = 30;
type MyArray = array [1..nmax] of Integer;
var A: MyArray; n:integer;
. . - . . . - , .
{ }
procedure Bubble (var A: MyArray; n:integer);
var i, j: integer;
v: Integer;
begin
for i:= 2 to n do
for j:= n downto i do
if A[j-1]>A[j] then begin
v:= A[j-1];
A[j-1]:= A[j];
A[j]:= v;
end;
end; { }
. n - 1 . . . .
"4 3 1 2":
- : 4 3 1 2;
- : 1 4 3 2;
- : 1 2 4 3;
- : 1 2 3 4.
, , .
, . , 1/2 (n2 - n) , n . , n-1 , n/2 . . , . 3/4 (n2-n), 3/2 (n2 - n) .
|
|
, ( ). , , .
. , , , : (, "1" "4 3 1 2") , , (, "4"), . . . . , " " - .
, , - . , .
{ }
procedure Shaker(var A: MyArray; n:integer);
var j, k, l, r, v: integer;
begin
l:= 2; r:= n; k:= n;
repeat
for j:= r downto l do
if A[j-1]<A[j] then begin { }
v:= A[j-1];
A[j-1]:= A[j];
A[j]:= v;
k:= j;
end;
l:= k+1;
for j:= l to r do
if A[j-1]>A[j] then begin { }
v:= A[j-1];
A[j-1]:= A[j];
A[j]:= v;
k:= j;
end;
r:= k-1;
until l>r;
end; { }
. n-1 .
, "2 4 1 3", :
- : 2 4 1 3;
- : 1 4 2 3;
- : 1 2 4 3;
- : 1 2 3 4.
n-1 , n/2 . , 1/2(n2-n) . 3(n-1), n2/4+3(n-1). ( ) n-1 , .
|
|
{ }
procedure Selet(var A: MyArray; n:integer);
var i, j, k, v: integer;
begin
for i:= i to n-1 do begin
k:= i;
v:= A[i];
for j:= i+1 to n do { }
if A[j]<v then begin
k:= j;
v:= A[j];
end;
A[k]:= A[i]; { }
A[i]:= v;
end;
end; { }
, .
. . . . , .
, "4 3 1 2" c :
- : 4 3 1 2;
- : 3 4 1 2;
- : 1 3 4 2;
- : 1 2 3 4.
:
{ }
procedure Inser(var A: MyArray; n:integer);
var i, l,v: integer;
begin
for i:= 2 to n do begin
v:= A[i];
j:= i-1;
while (v<A[j]) and (j>0) do begin
A[j+1]:= A[j];
j:= j-1;
end;
A[j+1]:= v;
end;
end; { }
. , n-1. , 1/2(n2 +n)-1, 1/4 (n2+n-2). : - : 2 (n-1); - : 1/4 (n2+9n-10); - : 1/2 (n2+3n-4).
, , . . .
-, , .. , . .
-, : , - . , , . , , , .