.
-
-
075200
2004 .
. .. . . : - . : - , 2004. 77 .
, 075200 .
.
- - ( ).
:
..,
..,
.. 4
1. .. 5
1.1 7
1.2 8
1.3 13
1.4 . . 14
1.5 15
2. .. 33
2.1 33
2.2 44
3. .. 45
3.1 46
3.2 . 48
3.3 49
4. 54
4.1 . 55
4.2 . 57
4.3 . 59
4.4 . 60
5. .. 74
.. 76
.. 77
. , . . 075200 . , , .
, . , , , , . . , . , , . . - . . , . .
|
|
075200 . , , internet-, http://www.citforum.ru http://algoritm.manual.ru. , , . , . , . , .
, [1].
. , . , . , .
" " , . .
. , , .
(, ) () (, , ). , , , . . , . , .
- - () . , . , . . 1. , , . .
|
|
. 1.
- . .
(, , , , ) (, ). - , , .
" " " ". , .. , , , .
:
1) , .. , , , ;
2) , ;
3) , .
, .
1.1 [2]
. , . , . , 1000 .
:
A[1,0] | |||
A[2,0] | A[2,1] | ||
A[3,0] | A[3,1] | A[3,2] |
:
A[1,0] | A[2,0] | A[2,1] | A[3,0] | A[3,1] | A[3,2] |
. 2.
(. . 2). A[i,j] B[x] : x=[i(i-1)/2+j] i>j. .
, , i .
. , , A. , .
1.2 [3]
. . . , , , , .
|
|
, . . , . , , . , .
const
MaxArrayIDX=1000;
type
TIntArray=array[1..MaxArrayIDX] of integer;
PIntArray=^TIntArray;
var Items:PIntArray;
procedure CreateAndFillArray(NumItems:integer);
var i:integer;
begin
GetMem(Items,NumItems*SizeOf(Integer));
for i:=1 to NumItems do Items^[i]:=i;
end;
procedure DisposeArray;
begin
FreeMem(Items);
end;
, , . , , MaxArrayIDX . , 100- . . , . .
, . Delphi, 4.0, .
, .
var Items:array of integer;
procedure CreateAndFillArray(NumItems:integer);
var i:integer;
begin
SetLength(Items,NumItems);
for i:=Low(Items) to High(Items) do Items[i]:=i;
end;
procedure DisposeArray;
begin
SetLength(Items,0);{ Items:=nil}
end;
. . , . . . , Delphi, - :
var List:array of integer;
procedure AddItem(new_item:integer)
begin
// 1 .
SetLength(List,Length(List)+l);
// .
List[High(List)]:=new_item;
end;
, . -, . 1000 , 1000 . , , , [4]. , , , 10 1. , , . . , .
|
|
, . , , . .
:
;
;
;
- (, ) .
, . , , . , . , 1000 , 999 . . . , "" . - , t, IsGarbage. IsGarbage True.
"", , . . . . , . . , .
, [5], . . 3 .
. 3.
INF , , NEXT . . , .
. -, (. 4). , , , . Pascal :
new_cell^.NextCell:=top_cell;
top_sell:=new_cell;
. 4.
. , , after_me. Pascal :
new_cell^.NextCell:=after_me^.NextCell;
after_me^.NextCell:=new_cell
, .
, . . , , .
|
|
, , , , . (. 5).
. 5.
1.3 [6]
- , , .
: , . pushing (), popping (). , . , :
var Stack:array of integer;
procedure Push(value:integer);
begin
SetLength(Stack, Length(Stack)+1);
Stack[High(Stack)]:=value
end;
function Pop:integer;
begin
Result:=Stack[High(Stack)];
SetLength(Stack, Length(Stack)-1)
end;
, , . , .. , .. , , . , .
1.4 . . [7]
- , , (, , ) - .
. . , , , , , . , - , , .
. , . , .
. UNIX . , .
, - . , . , . N , O(N) , .
, , . TPriorityCell :
type
PPriorityCell = ^TPriorityCell;
TPriorityCell = record
Value:string; //
Priority:integer; //
NextCell:PPriorityCell; //
end;
, .
, . , .
1.5 [8]
, , , .
:
a) , - ;
b) ( ) m³0 T_1,....T_m, , , ; _1,..., _m .
: .
. 6 . , , D. , , F G, , I J.
, . , , . , - , .
. 6.
, . , , . . , . 6 I , . , - , . . 6 , , I J. , , .
, , . - , . . - . , . 6, 3, , , .
1. . 6 3. - . , . 6, 4.
2 . 3 . N N- .
, .
- , .
. , : , , .
. . - , , . :
:
1. .
2. .
3. .
:
1. .
2. .
3. .
:
1. .
2. .
3. .
, 7, :
. 7.
: A, B, D, , , G, F, H, J
: D, B, A, E, G, C, H, F, J
: D, B, G, E, H, J, F, C, A
- . , " ", . . 8 , 1,2,4,6,7,9.
. 8. 1, 2, 4, 6, 7, 9
. . . , . , . [9], .
, . , " ". .
-, , . . -, , . . . 9 , 4, .
. 9.
, , . , . , . , . , . ( . 10 3), .
. 10.
.
c , , . , . [10], , , . .
. , O(N), N- . (N) . , N/2, (N) .
, .
AVL-
AVL- - , . AVL- . . 11 AVL-.
. 11. AVL
AVL- O(log2N). , AVL- O(log2N), N , O(n).