You are on page 1of 224

HPOOPIKH

E
'


I X
.
K B E

ATPA 2000




HPOOPIKH

E
'

IANNH XATZHYEPOYH
. , K B E

EIA KEPAYNOY
K T K

ANAITH INTEA
T M

EPAIMO KOYTOYPAKH

IANNH EOIA

...

TYPORAMA

YIA AOTOAKH

/ 19971999
ISBN: 9605380641
K : H 10/3
Copyright 2000

& , 26222 : (0610) 314094, 314206 : (0610) 317244
. 2121/1993,
.


.............................................................................................................................................. 9
K 1

, ,
E ................................................................................................... 11
1.1

O
1.1.1

...............................................................

13

1.1.2 T

................................................................

14

1.1.3 A ............................................................ 17
1.1.4 K ........................................................... 19
1.1.5 Y
1.2

..........................................................

20

A
1.2.1 E ................................................................................... 22
1.2.2 ......................................................................... 23

1.3


1.3.1 H ............................................................. 30
1.3.2 .............................................................. 31

...................................................................................................................... 34

........................................

35

K 2

, ,
E .................................................................................................. 37
2.1

2.1.1 M .......................................................................... 39
2.1.2 A ..................................... 41
2.1.3 ................................................................................. 44
2.1.4 A .......................................... 45
2.1.5 ............................................................................ 48

EPIEXOMENA

2.1.6 E ............................................................................................... 49
2.2

A
2.2.1 A ............................................................................... 53
2.2.2 ..................................................................................... 56

2.3

E
2.3.1 O ................................................................ 59
2.3.2

......................................................................................

63

...................................................................................................................... 64

........................................

65

K 3

, ,
E .................................................................................................. 67
3.1

O,
3.1.1 ......................................................................... 69
3.1.2 A ........................................... 71
3.1.3 A ........................................ 73

3.2.
3.2.1

..........................................................................................................

76

3.2.2 E

............................................................................................................

77

3.2.3

.............................................................................................................

79

3.2.4 A .......................................................................................................... 79
3.3.
3.3.1

..........................................................................................................

82

3.3.2 E

............................................................................................................

83

3.3.3

.............................................................................................................

84

3.3.4 A

.........................................................................................................

87

3.4.
3.4.1

.....................................................................

89

3.4.2 K ................................................................ 89
3.4.3 ...................................................... 90

EPIEXOMENA

...................................................................................................................... 90

........................................

91

K 4

, ,
E .................................................................................................. 93
4.1

4.1.1 O

..............................................................

95

4.1.2 ....................................................................................... 96
4.2. E
4.2.1 K ................................................................ 100
4.2.2 E
4.3

..........................................

102

...........................................................

104

........................................................................................

105

O
4.3.1 O
4.3.2

4.4

E
4.4.1 K ................................................................................................ 110
4.4.2

......................................................................................................

111

4.4.3 O ............................................................................. 112


................................................................................................................... 113

.....................................

113

K 5

, ,
E ................................................................................................ 115
5.1

.......................................................................... 117

5.2


5.2.1 O

............................................................

119

5.2.2 ..................................................................................................... 124

EPIEXOMENA

5.3


5.3.1 O .............................................................................................................. 126
5.3.2 A

......................................................................................................

127

5.3.3 E ........................................................................................................... 130


5.3.4 .......................................................................................................... 131
5.3.5 ........................................................................................... 136
5.4

-
5.4.1 O ............................................................. 138
5.4.2 E ........................................................................................................... 139
5.4.3 ........................................................................................................... 141

5.5


5.5.1 Y ............................................................................ 145
5.5.2 B .......................................................................... 146

................................................................................................................... 146

.....................................

148

K 6

, ,
E ............................................................................................... 149
6.1

E .............................................................................................. 150

6.2

..................................................................................................... 152

6.3

..................................................................................................... 156

6.4

........................................................................................................... 166

................................................................................................................... 170

.....................................

171

.........................................................

173

............................................................

209

........................................................................................................................

213

..............................................................................................................................

221

A


B



... ,
.


, .
,
.
.
/. ,
/,
. ,

: ,
/, . ,
, .

,
.
, , ,
. , .
. , . ,
,
-

POOO

10

. , ,
. ,
, ,
, . , , .
, .
1 , , .
2 , .
3 ,
, 4
, . 5
, , . , 6 , .


, , . .
. ,
. ,
.
.
1999

, ,
.

, :

,
,

,
,

.

KEAAIO 1: EIAH

12



.
1
1.1
1.2
1.3

, , , , , , .
,
H/Y.
.
() .
,
.

.
, ( )
.
,

,
.

. , -

1.1 OPIMOI KAI OPOOIA

13

,
.
.
, ,
Pascal C.
Pascal C

Pascal C.
, .

1.1
1.1.1

(H/Y).
,
, ,
H/Y. () , ,
,
, .

,
() .

(data).
(variables). ,
, .
H/Y. (

1.1.5 ).

T
.

KEAAIO 1: EIAH

14

1.1

-
, , , , . ,
SPACE LOCATION.
() .
SPACE ( )
. .
LOCATION
, , x y.
, ()
, .

1.1.2

,
, .

. , (data type)
,
(domain) , , (operations)[1].

)
() )


().


. (atomic types)
,

. .
SPACE 1.1.

: (integer),
(real), (boolean), (character).

[1]
.

1.1 OPIMOI KAI OPOOIA

15

Pascal
Pascal .
( ) .

1.2

integer
()


[-maxint, maxint],
maxint
[2].

[3] (:=)
(+, -, *, div,)
(=, <>, <, >,...)

boolean
()

(false, true)

(:=)
(and, or, not)

Pascal . .. SPACE 1.1 :


var SPACE : real ;
[4]
(var) SPACE,
(:) (real). ;
.
(structured types)
, ,
(elements) (nodes), , ,
.

[2]
, H/Y (..
H/Y, H/Y). .. Turbo Pascal Pascal H/Y.
[3] .
[4] Pascal Pascal
.

KEAAIO 1: EIAH

16


)

,

( ),
)

( )
/ .

1.3

H/Y. (
H/Y 1.1.5
). / . (data structures).
/
(size) .
.

Pascal
(array)
.
[5] . LOCATION
1.1 , ,
(x) (y)
.
Pascal :
type vec = array [1..2] of real ;
var LOCATION : vec ;
(type)
vec, (=) (array) ([1..2]) (real)[6].
LOCATION vec,
.

[5] .
.
[6] ()
, .
(instances)
. , , ,
, .

1.1 OPIMOI KAI OPOOIA

vec, LOCATION,

( ), ,
,
H/Y.
Pascal
:
(access) (.. LOCATION[2]): ( 2 ) (LOCATION),
(.. SPACE:=
LOCATION[2]).
(retrieval) . 2
. [],
, .
(assignment) (.. LOCATION[2] :=
SPACE, LOCATION[1] := 2.5): ( ) (SPACE)
(2.5) .
, (update) .

1.1.3

,
.
, , ,
.
( ) .
.
(abstract data type) (ADT).
( ) .

17

KEAAIO 1: EIAH

18


H/Y. ..

H/Y.
( 1.2) Pascal
[-maxint, maxint], maxint
, H/Y
, (-, ) .

, . ( 1.1.5
, 1.3 ).
,
.

,
. , ,
, ,

.


, ,
. ,
.

1.1

1.1.2
,
.

; .
.

1.1 OPIMOI KAI OPOOIA

1.1.4

: , , (, ), (, ) . ,

. ( ) , , .

.
(fundamental
structures). ,
,
(static structures).
, , (higher-level structures).


, ,
(dynamic structures).
(, , ) .
(linear) (non-linear).
.
, --
. 1.1 , /
.. . ,
-- -- -

19

KEAAIO 1: EIAH

20

. 1.1
, .

( --) .. .
,
.
/
n0
...
n1
1.1

()
() ()
.

n2

nm

n1

n2

n3

()

...
...

()

1.1.5

,
. .
H/Y,
. H/Y, / H/Y
. .
H/Y, (main
memory) . H/Y
(memory cells).
(address), . ,

.
(word) H/Y. , ,
H/Y () 1 byte, 8

1.1 OPIMOI KAI OPOOIA

(bits) (1 byte = 8 bits). ,


.
H/Y (RAM:
Random Access Memory).
,
(.. ,
).
H/Y ( .. ).

H/Y
. .
K
() (traversal):
.
() (search):
.
() (insertion): .
() (deletion):
.
() (sorting):
.

, . ,
, ,
.

.

21

KEAAIO 1: EIAH

22

(Pascal, C ), , .

1.1


.






() .


() .

1.2
1.2.1 E

, H/Y, .
.

( .. ).
, ,
.
.

.

1.2 AOPIMIKH A

23

Pascal ()
C. . H
.
1.2.2

.

:
n
.
:

.
.
,
,
... .
.
,
.
, 1.1.

,
1.1.
,
, . .

1.4

KEAAIO 1: EIAH

24

1.1: EYPEH MIKPOTEPOY TOIXEIOY INAKA

: () () ,
.
: (X) (MIN) .
MINSTOIXEIO(A, N)
1 K 1, X 1, MIN A[1]
2 while K N
3
if M > A[K]
4
then X K, MIN A[K]
endif
5
KK+1
endwhile
6 print X, MIN

{ .}
{ }
{ }
{ }
{ }
{ }


(MINSTOIXEIO)
(A, N), ,
. () (1-6)
, .
.


, ( 5)
( 2, 3) ( 6).
, (..
1, 4). ,
.
, -

1.2 AOPIMIKH A

.
. (

).
(..
{ } 1 1.1).


. .
,
print ,
,
() ( 6).

(MIN, , ).
,
.
,
, , .. [1] ( 1),
[] ( 3, 4).
,
.
, .

( ), (TRUE, FALSE)
(.. ).

(, -

25

KEAAIO 1: EIAH

26

) :
(+, -, *, /, , ), (<, , =,
, , >) (and, or, not).
( 5 ),
( 2, 3) (.. (A > 1) and (B 0))
. ,
.

) (
( ) :
<> <>
<> (.. 5 ) . (

).

. :
( ) .
, , ( 4, 3-5)
(endif, endwhile).
, .

if

:
if <>
then < >
[else < >]
endif

1.2 AOPIMIKH A

27

<> (
.. 3) . <
> < > .
else (.. if
1.1 ). endif
if .
: < >, <
>, . .
, > [] ( 3)
, 4 ( , []
, ) 5 ( ),
5.
< > if, if ...,
if,

,
.

while
:
while <>
< >
endwhile

: E <>
< >, ,
.
, . < > ,

KEAAIO 1: EIAH

28

. endwhile
. .. 1.1, <>
( 2) if ( 3-4) ( 5). , . , ( 5),
.
.

, for,
( ) . , while. ,
. ,

for <> < > to < >
< >
endfor
<> . < >, <
>
. endfor
.
: O
< > (1).
< >, .
< >, . .
for while 1.1 1.4 .

1.2 AOPIMIKH A

29

1.2: EYPEH MIKPOTEPOY TOIXEIOY INAKA

MINSTOIXEIO(A, N)
1 X 1, MIN A[1]
2 for K 1 to N
3
if M > A[K]
4
then X K, MIN A[K]
endif
endfor
5 print X, MIN .

{ }
{ }
{ }
{ }

{ }

if
. ,
for while .



.
. () ,
(function) (procedure).
, (..
, )
.

:
n .
:
.
...
.
.

1.2

KEAAIO 1: EIAH

30

.
. .

1.3


, .

.
, .
.
1.3.1

, .
. .
,
.
. , .

, .
,
.
) , )
) H/Y
.
.
, ,
(basic operations) . , -

1 . 3 O Y O K O T H TA A O P I M N

, . . . ..
,

. , , .

. .. ,
.

1.3.2

f(n), n / .
f(n) .
f(n) :
() : f(n)
() : f(n)
() : f(n).
f(n)

,
.
,
,
. ,
.

31

KEAAIO 1: EIAH

32

1.5


1.1 f(n)
, () , X MIN.
,
, n-1, .
()
. X MIN (
1), f(n) = 2.
()
,
3, ,
X MIN. n ,
n - 1 X MIN,
, . f(n) = 2 (n - 1) + 2 f(n) = 2 n.
() , 1, 2
3 ,
.
,
3!=6 .
:
: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 21
:

( ),
:
f (3 ) =

0 + 0 + 2 + 2 + 2 + 4 10
=
6
6

n . O

1 . 3 O Y O K O T H TA A O P I M N

33

1.2

.


.
, (big-), :
f (n ) = O ( g (n )) ,
g(n) , ..
f(n) = (1), f(n) = (nlogn), f(n) = O(n2). 1.2,
logn (log2n) n,
( ).
, n = 1024.
logn = 10, n logn = 1024 10 = 10.240, n2 1.000.000
n3 1.000.000.000.
M
1 logn


n nlogn n

M


1.2

`.

f(n)
.
.
,
n .

1.3

KEAAIO 1: EIAH

34

1.6

n(n +1)
2
. -

() f(n ) =

f(n) : f(n) = () n2 + () n.
() n2 = n2/2 : f(n) = O(n2).
() f(n ) =

8 logn + 4n
,
3n2 log n
f(n ) =

8 logn
4n
+ 2

2
3n log n 3n log n

f(n ) =

8 logn
4n
+ 2
.
2
3n log n 3n log n

, n logn < n2. : f(n ) = O (

1
).
nlogn

1.4

:
) f(n) = 5 n logn + 0.5 n2 + 10

) f(n) =

3n + 5 log n + 1
2n


, ,
. (.. )
(.. ).
. O

YNOH

35

.
() ,
.

() .
( ) .
,
- (, ) - (, ). ,

(, ) (, ).
O
. ,


.
, . .

.
.


:
1. M. Main and W. Savitch, Data Structures and Other Objects,
Benjamin/Cummings, 1995.
1.2

36

KEAAIO 1: EIAH

,
10.1 .
2. C. A. Shaffer, A Practical Introduction to Data Structures and
Algorithm Analysis, Prentice Hall, 1997.
3 ,
. ,
, .
. ,
.
3. T. A. Standish, Data Structures, Algorithms and Software Principles,
Addison-Wesley, 1994.
6.1 6.4
.
4. M. A. Weiss, Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, 1995.
2 ,

,
,
.
.

, .
, ,
, .


, :
,
,

,

,

,

,

.

K E A A I O 2 : I N A K E K A I E PA E

38
















K 2
2.1
2.2
2.3


,
, H/Y. , .
.
,
' () . , ( )

INAKE

39

( ). ,
, ,
. .
,
''. , .
,
, .

2.1
2.1.1

(array)[1], 1,

. , ,
.

, (base type). ,
(homogeneous structure). (index set) I,
. , (index type). .
, , , .
, .
, ( ) = {1, 2, , n}.
1, 2, , n. k, k , -

[1] table,
array .


N
( )

( ) ,

.

40

K E A A I O 2 : I N A K E K A I E PA E


(indexed variable), k (index) . [].
,
= {nl, , nu}, nl < nu. nl nu
(lower bound) (upper bound) .
, ,
:
= nu - nl + 1.

(2.1)

nl = 1, = nu = n.
,
.
1.3 1, (access) (retrieval)
(assignment) (update) .
, (
):
[] ( )
[] ( ).
() . ,
: () , ()
() ( ) .
3, , Pascal : vec, real = {1, 2}.
,
.
1.1.4 . (.., Pascal, C), , .
-

INAKE

41

, (.. Lisp). , .

, ()
.
.
2.1.2



, .
= {nl, , nu}.
, 1.1.5 , H/Y (bytes) . () .
L . L
(element length)
. , (base address)
, bA. ,
L
bA , bA + 1, bA + 2, , bA + L-1.
, ,
, bA + L, bA + 2L,
bA + 3L ..., 1, 2, 3, L nl + 1, nl + 2, nl + 3, . (
1 = ((nl +1) - nl ), 2 = ((nl + 2) - nl ), 3 = ((nl + 3) - nl ), ). ,
,
i (nl i nu) bA + (i - nl) L, (i - nl)

K E A A I O 2 : I N A K E K A I E PA E

42

i, (i nl) L bA. , loc(Ai) byte i


:
loc (Ai) = bA + (i - nl) L

(2.2)


loc ( Ai ) = c0 + c1i

(2.3)

c0 = bA - n1L, c1 = L

(2.4)

(2.3)
i i.
(array mapping function) (AMF). c0, c1
.
loc (i)
i, c0 c1
(c1L) (c0 + c1L) . , i i .

2.1

,
.


1956 1998
. ,
= {1956, 1957, , 1998}. ,
1965
1965.
2.1 :

INAKE

43

= nu nl + 1 = 1998-1956 + 1 = 43 .
L = 2
(bytes) bMATH = 500,
loc(1956) = 500, loc(1957) = 502,
loc(1958) = 504 ..., byte 1956, 1957, 1958
... 500, 502, 504 ... 2.1.

(2.4),
c0 = 500 - 1956 2 = -3412, c1 = 2
( 2.3)
loc(i) = -3412 + 2 i .

.. 1985
i = 1985:
loc(1985) = -3412 + 2 1985 = 558.
2.1
,
.
MATH
500
501
502
MATH1957
503
504
MATH1958
505
506
.
.
.

1956

25

1957

38

1958

45

1959

.
.
.

41

1997

122

1998

115

MATH 1956

.
.
.
()

.
.
.

.
.
.

()

2.1

()
()
a MATH

K E A A I O 2 : I N A K E K A I E PA E

44

2.1

,
: ) ) , ) ) . ,
1.1.4 .
.

2.1.3


N

= 1 2
,

.

(two-dimensional array)
,
. , ( ) ( ) ,
= 1 2. 1 2 1 2 (dimensions) ,
1 2. , = 1 2.
1 2,
1 = {1, 2, , nu 1 } 2 = {1, 2, , nu 2 }, 1 = nu 1
2 = nu 2 ,
1,1, 1,2, , 2,1, 2,2, .
, 34, 2.2.

2.2.


3 4.

A 1,1

A1,2

A 1,3 A 1,4

A 2,1

A2,2

A 2,3 A 2,4

A 2,3

A3,2

A 3,3

A 3,4

(rows), ,
(columns), .
3 4 , .

INAKE

45

. i,j, i I1 (1 i
1) jI2 (1 j 2),
i j , , j i , , i j.

2.1.4

1 2
H/Y : () , (column-major order),
() ,
(row-major order). 2.3,

.

A1,1

A1,1
A2,1

A1,2
1

A3,1

A1,3

A2,1

A1,4

A2,2

A2,2

A3,2
.
.
.
()

A2,1

.
.
.

.
.
.

2
.
.
.

()

, , , H/Y ,
,
1,1 ,

2.3.

H/Y
() , ()

K E A A I O 2 : I N A K E K A I E PA E

46

,
bA.
1 = { ni1 , , ni1 } 2 = { nl 2 , , nl 2 }, ,
, :

loc(Ai,j) = bA + (1 (j - nl 2 ) + (i - nl1 )) L

(2.5)


loc( Ai, j ) = c0 + c1i + c2 j

(2.6)

c1 = L, c2 = N1L, c0 = bA - c1nl1 - c2 nl2

(2.7)

, 1 = nu1 - nl1 + 1.

loc(Ai,j) = bA + (2 (i - nl1 ) + (j - nl 2 )) L

(2.8)


loc( Ai, j ) = c0 + c1i + c2 j

(2.9)

c1 = N 2 L, c2 = L, c0 = bA - c1nl1 - c2 nl2

(2.10)

2 = nl 2 - nl 2 + 1.
A , i, j, (2.6) (2.9). ,
.

H/Y, , (access table), ,
. , ,
.

INAKE

47


. .., C
, FORTRAN .

2.2

15 , () .

15 4 (1 = 15, 2 = 4), 1 = {1, 2, , 15}
2 = {1, ,4}. 1 ,
2 . . ..,
5,3 5 3. , 15 4 = 60 .

1 

1

15

11

13

14

M 2

12

14

15

12

17

16

14

13

.

.

.

.

.

.

.

.

.

.

15

14

18

15

13

b = 300,
L = 3
, (2.9), (2.10):
c1 = 2L = 3 3 = 9,

K E A A I O 2 : I N A K E K A I E PA E

48

c2 = L = 3, c0 = bA c1 nl1 c2 nl 2 = 300 - 9 1 - 3 1 = 288


loc(i,j) = 288 + 9i + 3j
byte 12,3, i = 12 j = 3:
loc(12,3) = 288 + 9 12+ 3 3 = 288 + 108 + 9 = 405.

2.1.5

, (multidimensional array) m 1 2 m, m- , = 1 2 m.
m . ..,
loc( Ai1 ,

i2

,...,

im )

= c0 + c1i1 + c2 i2 + ... + cmim

(2.11)

cm = L
cl -1 = N l ci i = 2, ..., m

(2.12)

c0 = bA - c1nl1 - c2 nl 2 - ... - cmnl m .


, ,
.
,
,

, .
,
(..
Assembly).
,

. , (array descriptor), : )
, ) , ) , )
, ) ) .

INAKE

5
1988 1997.
3 .
.
) ( , , )
) , bH = 200,
L = 2
.
)
3, 1990 2.

2.1.6
,

.
/ ,

.
, , .
, , , (rectangular arrays),
nl1 = nl 2 nu1 = nu2 ,
, 1 = 2 = . .
(symmetric) Ai,j = Aj,i i, j.
,
(lower triangular array) (upper
triangular array). ,
( 2.4), Ai,j = 0
i < j, , , Ai,j = 0 i > j.

49

2.1

K E A A I O 2 : I N A K E K A I E PA E

50

2.4.

() ,
()

A1,1

0

0

... 0

A1,1

A1,2

0

... 0

A2,1

A2,2

0

... 0

A2,1

A2,2

A2,3

... 0

A3,1

A3,2

A3,3 ... 0

.

.

.

.

.

.

.

.

0
.
.
.

A3,2
.
.
.

A3,3
.
.
 .

A3,4 ... 0
.
.
.
.
.
.

.

.

.

.

0

0

0... An-1, n-1 An-1, n

An,1

An,2 An,3

... An,4

0 ... An, n-1

()

An, n


()

(tridiagonal array)
, (i = j), (i = j-1), . , (i = j+1), . ( 2.4).
, (sparse array)
(.. 80%)
.
, ,
,
2.4. ,
. 1 ( ) , 2 , 3 , , n n- . ,
[2]
S = 1+ 2 + 3 + ... + n =

n(n +1)8
2

(2.13)

, n n = n2,
. .., n =10, ,
100, 55 .

[2] ,

x =
x =1

n(n + 1)
2

INAKE

51

,
: 1,1 2,1 2,2 3,1 3,2 n,n-1 n,n. ,
byte ( ) i,j
i, j ( i j).
i,j i, ,
i-1 ,
i(i -1)
i = 1 + 2 + 3 + + (i-1) =
2
( ). i,j
j i, , j = j-1 . , (i + j) , (i + j)L . , i,j :
loc( Ai , j ) = bA + ( S i + S j ) L = bA +

i(i -1)
L + ( j -1) L
2


loc( Ai, j ) = c0 + c1 i( i -1) + c2 j

(2.14)

c0 = bA - L, c1 = L / 2, c2 = L

(2.15)


,
. , .
,
.
DA
= {1, , nu},
n(n +1)
nu = N =
(2.16)
2
.

K E A A I O 2 : I N A K E K A I E PA E

52

i i,j j , i,j DAk,


k=

i(i -1)
+ j.
2

(2.17)

) / DA A ) / A
DA. , .
ANAKTHSH i, j (i < j), DA, (2.17).
ENHMEROSH () i,j DA, i, j (i j), ,
, .
ANAKTS (I, J, DA)

1
2
3
4
5

ENHMEROSH (I, J, X, DA)

if I < J
then 0
else K ((I * (I-1)/2) + J)
DA[K]
endif
print

1
2
3
4
5

if I J
then K ((I * (I-1)/2) + J)
DA[K] X
else if X 0
then print
endif
endif

,
, .

2.2

n n. )


, ) , )

ANAZHTHH E INAKE

53

)
/ / .

2.2 A

(search) ' :

, ,
, . , .
. ,
, (sequential or linear
search) (binary search).
2.2.1

,
. , ,
, . , ( ), ,
( ) .
2.1: PAMMIKH ANAZHTHH

: (), () ().
: , . , .
GRAM-ANAZHTHSH (A, , X)
1 I1
2 while (I ) and (A[I] X)
3
II+1
endwhile
4
if A[I] = X
5
then print I
6
else print
endif

{ }
{ }
{ }
{ }
{ }
{ }

K E A A I O 2 : I N A K E K A I E PA E

54

, 2.1 (GRAMANAZHTHSH) ,
. () . while
( 2-3) (
3), ( ), , . A[I], X.
()
(I > )
(A[I]=). and
. , ,
> , [],
(A[I] X), (I ) . , if ( 4-6) , , ( 5) ( 6).

2. ,
,
f(n) = n,
. , ,
f(n) =

2.3

n +1
.
2


, ( ) .
.
.


,
.

ANAZHTHH E INAKE

55

2.3: PAMMIKH ANAZHTHH E IATETAMENO INAKA

: (), () ().
: , . .
DIAT-GRAM-ANAZHTHSH (A, , X)
1 I1
2 while (I ) and (A[I] X)
3
II+1
endwhile
4
if A[I] = X
5
then print I
6
else print
endif

{ }
{ }
{ }
{ }
{ }
{ }

2.3
(DIAT-GRAM-ANAZHTHSH),
while ( 3) ,
([] > )
( ). ,
() () (). , if ( 4-6).


. 2.1 ,
.
(:

, ,
).

2.3

K E A A I O 2 : I N A K E K A I E PA E

56

2.2.2


, ( ) .
:
'' . . , ,
,
,
.
. 2.2 (DIADANAZHTHSH), .
NL NU,
1,
, . , ( 2).
'[ ]' ( )
( Pascal, div.) while ( 3-7)
, ,

. if ( 4-6) while,
.
, (NL > NU) (), ([] = ) (). if ( 8-10) .

ANAZHTHH E INAKE

57

A 2.2: YAIKH ANAZHTHH

: (), () ().
: , , . , .
DIAD-ANAZHTHSH (A, , X)
NL 1, NU
M [(NL+NU)/2]
while (A[] X) and (NL NU)
if A[] < X
then NL + 1
else NU - 1
endif
7
M [(NL+NU)/2]
endwhile
8
if A[] = X
9
then print
10
else print
endif

1
2
3
4
5
6

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

, , , ,
. f(n) = (logn) .



, = 22.
,
.

9 10 11 12 13 14

A 8 12 15 18 22 23 30 38 45 50 56 60 65 70

2.4

K E A A I O 2 : I N A K E K A I E PA E

58

,
( ) 2.2.

A[M] A[M]X

NLNU

NL

 NU

1

14

30

TRUE

TRUE

15

TRUE

TRUE

 4

22

FALSE

TRUE

0 .
, , ( )
, while 2.2. , ,
A[M] = X ([5] = = 22).
, , ()
. ,

.
1 2

9 10 11 12 13 14

A 8 12 15 18 22 23 30 38 45 50 56 60 65 70
2 3

2 1

3
2

, ,
,
.
, ,
, . ,
,
.

A N A Z H T H H E I N A K E / E PA E


.
,
. ,
,
.

59

2.4

2.3

1, (record)

.

.
2.3.1

, , , . , (heterogeneous
structure).
(field).
(identifier) (type).
, . , . , .
( ) R (fd1, fd2, ,
fdn) n- (. ) 1, 2, ,
n , . , R
fd1(R), fd2(R), , fdn(R). ,
, ,
, .
R = 1 2 n ,
.



( -),

, (-)

(),

() .

K E A A I O 2 : I N A K E K A I E PA E

60

fdx ()
(fdx1, fdx2, , fdxm), fdx1(fdx(R)), fdx2(fdx(R)), , fdxm(fdx(R)).
. fd1, fd2, , fdn ,
fdx1, fdx2, , fdxm ...
,

.

2.5

-

: ., , .,
, ., .
. , .
, , .
, .

MAHTH
MAHTH
AP. MHTPOOY
ONOMATENYMO
ONOMA
ENYMO
ON. ATPO
YO
HM. ENNHE
HMEPA
TAH
AP. MHTPOY ON. ATPO YO
MHNA
ETO 
ONOMATEMYNO
HM. ENNHE
TAH

ONOMA

ENYMO

HMEPA

MHNA ETO

., , .,
, . ,
, , , , -

E PA E

61

. ,
(),
,
(()).
()
.

, ,
( ) ( )
. :
FDX(R) ( )
FDX(R) X ( )
FDX .

Pascal
2.5, , .
Pascal, .
type
onmateponrec = record
onoma:array [1..12] of char;
eponymo: array [1..24] of char;
end;
mathitisrec = record
armitrwou: integer;
onomatepon: onomateponrec;
onpatros: array [1..12] of char:
end;
var mathitis: mathitisrec;

2.6

K E A A I O 2 : I N A K E K A I E PA E

62

, oneponrec mathitisrec
(record). ,

(onepon). (oneponrec)
(onoma, eponymo). , 12 , , 24 .
(.. )
Pascal. (armitrwou
onpatros) (onomatepon).
(integer), 12 .
() onomateponrec.
, (mathitis) ()
mathitisrec,
.
Pascal armitrwou mathitis mathitis.armitrwou. ,
onoma mathitis.onepon.onoma.
,

.

C
2.6
C :
typedef
struct {
char onoma [12];
char eponymo [24];
} onomateponrec;

E PA E

typedef
struct {
int armitrwou;
onomateponrec onomatepon;
char onpatros [12];
} mathitisrec;
mathitisrec mathitis;
O (onomateponrec, mathitisrec)
(struct) C . , ()
() (onomatepon).
int . ,
Pascal.

2.3.2

, .
(composite structures). (array of records), . ,
(key)
. ,

. . ..
MAHTH ( 2.5).
MAHTH ..
-
.

63

2.6

K E A A I O 2 : I N A K E K A I E PA E

64

2.7


, KLEIDI
. ,
.
.

2.3.
. ,
2.3, [] KLEIDI(A[I]).

, .
.
' , , ' .
. ' ,
. , , ,
. ' ,
. ,
, , .

/.
, .
, , (),
. ,
, ,

E PA E / Y N O H

65

, , ,
. ,
, , ,
. .
,
, .
' .
- ,
.
, , . ,
( ) .

,
. , , .


1. , ., ,
, 1993.
5
,

, Fibonacci .
2. Kruse, L. R., Data Structures and Program Design, 2nd Edition,
Prentice Hall, Englewood Cliffs, NJ 1991 ( 3
, 1994).
6.2 Rectangular Arrays, 3.
Variation: Access Tables
. , 6.3 Tables of

66

K E A A I O 2 : I N A K E K A I E PA E

various shapes .
, 5.2 Sequential Search,
4. Analysis of Sequential Search .
3. , ., , . ', ART of TEXT, 2
, 1992.
2.3 ' ' 2.4
, , .
, 7 , , ,
Fibonacci, .
4. Standish, A. T., Data Structures, Algorithm and Software Principles,
Addison-Wesley, Reading, MA 1994.
6.5 Analyzing Simple Algorithms ,
Analysis of Sequential Search
Analysis of Binary Search
.
5. Stubbs, F. D. Webre, W. N., Data Structures with Abstract Data
Types and Pascal, 2nd Edition, Brooks/Cole (Wadsworth), Pacific
Grove, CA 1989.
2.2.4 Special Arrays , 2.3 Records
2.5 Composite Structures .


, . ,
,
.


, :

,
,
,

.

KEAAIO 3: ENIKE ITE

68

3
3.1 ,
3.2
3.3
3.4


, . , . ,
,
.
, , . ,
. , :
, "1.1.2 " 1 . , ,
, , , , . , ''.
. , , ,
'', '1.1.5 '
1.
, ,
,
.

O P I M O , A N A A PA TA H K A I T Y O I T N

69

3.1 ,
3.1.1

, ,
. , ,
. .
, .. ,
. , , ,
. ,

. ,

.


(sequence)
. L, n , n ( n ) (L1, L2, , Ln), L1
Ln . Li (predecessor)
(Li-1) (successor) (Li+1),
, , ,
.
(position) () . , ,

. Li i.
(head).
(null list).
, ,
L L = {1, , n}.
, . ,

(
).

70

KEAAIO 3: ENIKE ITE

(), . ,
, 2.1,
(sequential access). , , . ,
, ,
. ,
, .
,

' , (general lists)[1]
(special lists). / ,
.
, .

. ,
(contiguous representation),
(contiguous) . ,
. , (linked representation), /. ,
,
(link) . ,
, (contiguous lists)
(linked lists).

[1] (generalized lists),


.

O P I M O , A N A A PA TA H K A I T Y O I T N

71

3.1.2

L . , , , , 3.1[2],
L = {1, , n}.

. ,
(Lt)
(n), , .

()

L1

L2

l1

l2

...



Lt
L n-1
lt


Ln

...
3.1


. , ,
(overflow), ,
. , , . ,
. , , , .
, ,
. 3.1,
Pascal 3.1 C.
[2] , 3.1, , 2.1.

KEAAIO 3: ENIKE ITE

72

3.1

Pascal

Pascal :
type
slista = record
stoixeia: array [1..n] of typostoixeiou;
telos: 0..n
end;
, , (type) slista
(record) . (stoixeia)
(array) {1, 2,
, n}, . n, ,
'typostoixeiou'. (telos)
{0, 1, 2, , n}.
stoixeia .
telos ,
. ,
. telos
n, . , 0 .

3.1

C
C
:
typedef
struct {
typostoixeiou stoixeia [n];
int telos;
} slista;

O P I M O , A N A A PA TA H K A I T Y O I T N

, , (typedef)
slista / (struct) /.
(stoixeia) n,
, 'typostoixeiou'. (telos) (int) ( C ([1..n]) Pascal). , 3.1.

3.1.3


(link) [3]
(pointer) () . ,
, (nodes). .
()
. () ,
.
(one-way or singly
linked list). ,
.
3.2 L = (l1, l2, l3, l4),
(1, 2, 3, 4). Ni
.
Li li. Pi .
(
). ( N4) ,
,
.
(null pointer).
[3] (pointes)
(indexes) .

73

KEAAIO 3: ENIKE ITE

74

NIL. L ,
( N1) , . , NIL.


L1

P1

l1
3.2

L2

P2

l2
N1

P3

L3
l3

N2

l4
N3

L4 P4

N4



. . , ,
. , (, ) . , FORTRAN, BASIC COBOL,
().
(pointer
variables)[4]. (pointer)
/.

, . ,
( ).

,
Pascal C. , . ,
, ,
.
[4] (indexed variables),
, (pointer variables), .

O P I M O , A N A A PA TA H K A I T Y O I T N

Pascal
Pascal, , :
type
deiktiskombou = ^kombos;
kombos = record
stoixeio: typostoixeiou;
deiktis: deiktiskombou
end;
var
L: deiktiskombou;
^ ( ) Pascal

/ .
,
deiktiskombou. kombos,
^ . ,
kombos (record)
. , stoixeio, , typostoixeiou. ,
deiktis, deiktiskombou,
. , L
deiktiskombou, .
,
.

75

3.2

KEAAIO 3: ENIKE ITE

76

3.2

C
C
:
typedef struct kombos *Deiktiskombou;
typedef struct kombos {
typostoixeiou stoixeio;
deiktiskombou deiktis;
} KOMBOS;
Deiktiskombou L;
, * ^ Pascal. , Deiktiskombou.
, L, KOMBOS,
(struct)
kombos. , 3.2.

3.1

8.2 Lists Comparing


Sequential and Linked List Representation Thomas
A. Standish, Data Structures, Algorithms and Software Principles,
Addison-Wesley, 1994, 4.1.3 Comparison of
List Implementations Clifford A. Shaffer, A
Practical Introduction to Data Structures and Algorithm Analysis,
Prentice Hall, 1997 .
. - .
3.2
3.2.1

(traversal)
. ( ) , , . ,
(visiting). . .., .

O P I M O , A N A A PA TA H K A I T Y O I T N / PA E I E Y N E X O M E N H I TA

77

3.1: IAEPAH YNEXOMENH ITA

: (L) (T).
: , . ,
.
SL-DIAPERASH (L, T)
1 for K 1 to T
2
PROCESS (L[K])
endfor

{ }
{ }

, 3.1 (SL-DIAPERASH).
PROCESS, .
T , . 3.1
,
T () .
. PROCESS .

3.2.2

(insertion)
() .
, ,
.
. ,

. 3.3 4,
7.

KEAAIO 3: ENIKE ITE

78

16

19

25

7
()

18

3.3

() () ()

16

19

25

7
()

18

16

18

19

25

7
()

3.2: EIAH E YNEXOMENH ITA

: (L), (), (T),


() ().
: , , . , , , .
SL-EISAGWGH (L, N, T, I, X)
1 if T=N
2
then print ''
3
else K T
4
while K I
5
L[K+1] L[K]
6
K K-1
endwhile
7
L[I] X
8
T T+1
endif

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

3.2 (SL-EISAGWGH)
.
3.2 : -

PA E I E Y N E X O M E N H I TA

79

, ( 12), .

, ( T)
( ). while ( 4-6)
( 3). ,
( 7)
( 8),
, .

3.2.3

(deletion)
, . 3.3 (SL-DIAGRAFH).
3.3: IAPAH E YNEXOMENH ITA

: (L), (T) ().


: , . ,
.
SL-DIAGRAFH (L, T, I)
1 for K = I to T-1
2
L[K] L[K+1]
endfor
3 T T-1

{ }
{ }
{ }

:

,
, for ( 1-2). ,
T ( 3),
.

KEAAIO 3: ENIKE ITE

80

3.2.4

. (2.1 2.2) : L T .
3.3.


.

, , .

3.3: ANAZHTHH - IAPAH E YNEXOMENH ITA

: (L), (T) ().


: , , . , , , .
SL-ANAZHTHSH-DIAGRAFH(L, T, X)
1 I1
2 while (I  T) and (L[I] X)
3
II+1
endwhile
4 if L[I] = X
5
then for K = I to T-1
6
L[K] L[K+1]
endfor
7
TT-1
else print ' '
8 endif

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

, ( 2.1) ( 3.3),
3.3. : ' ,
( 1-3) , (
4), ( 5-7),
( 8).

P A E I E Y N E X O M E N H I T A / P A E I E A A Y N E E M E N H I TA

81

() .

.

3.1

() .

.

3.2

3.3

,
. ..,
Pascal new(p) dispose(p) ,
p.
, .

.
, KOMBOS.
KOMBOS(P), P , . , STOIXEIO(KOMBOS(P)), DEIKTHS
(KOMBOS(P)) ()
KOMBOS(P).
, i, i
i, .
3.2, 1, KOMBOS(P1),
2, 1. 2, DEIKTHS(KOMBOS(1)),
2, 3.

3.3.1


, 3.4 (DL-

KEAAIO 3: ENIKE ITE

82

DIAPERASH). L ,
,
P () , . , PROCESS.
3.4 : , () P,
. ,
.
( 3), PROCESS
. ( 4),
P .
P NIL,
.

3.4: IAEPAH YNEEMENH ITA

: (L) .
: , . ,
.
DL-DIAPERASH (L)
1 P L
2 while P NIL
3
ROCESS (STOIXEIO(KOMBOS(P)))
4
P DEIKTHS(KOMBOS(P))
endwhile

{ }
{ }
{ }
{ }

3.3.2



.
3.4, 3.5.

P A E I E A A Y N E E M E N H I TA

83

Lx

Px

lx

()
Nx

L1

P1

L2

l1

P2

l2
N1

P3

L3
l3

N2

3.4

L4 P4
l4

N3

N4
()


: ()
, ()

,
, 3.5 (DL-EISAGWGH-META).
,
() ().
( 1-2),
. 3,
( )
PI. 3.4, P =
PI = P1, ( x) Px P2,
3. 4, PI
.
3.4, P2 .
Lx

3.5

Px

lx
L

L1

P1

l1

L2

P2

l2
N1

Nx

P3

L3
l3

N2

L4 P4
l4

N3

N4

3 4 ,
3.4 3.5, 3.6.

KEAAIO 3: ENIKE ITE

84

3.5: EIAH E YNEEMENH ITA

: ()
().
: , , . , ,
.
DL-EISAGWGH-META (P, PI)
1 if (P = NIL) or (PI = NIL)
2
then print
3
else DEIKTHS(KOMBOS(P)) DEIKTHS(KOMBOS(PI))
4
DEIKTHS(KOMBOS(PI)) P
endif

Lx

{ }
{ }
{ }
{ }

Px

Lx
lx

lx
3.6

() 3 ()
4
3.5

L2
l2

P2

Px

Nx

P3

L3
l3

N2

N3
()

L2
l2

P2

Nx

P3

L3
l3

N2

N3
()

3.3.3


3.7. , 3.6 (DL-DIAGRAFHMETA). ()
, ,
(.. 1 3.7, 2). ,
, ,
3.7, , , .
,
, .

P A E I E A A Y N E E M E N H I TA

85

3.6: IAPAH E YNEEMENH ITA

: (PI) , , .
: , , . , ,
.
DL-DIAGRAF(PI)
1 if (PI=NIL) or (DEIKTHS(KOMBOS(PI))=NIL)
2
then print
3
else P DEIKTHS(KOMBOS(PI))
4
DEIKTHS(KOMBOS(PI)) DEIKTHS(KOMBOS(P))
endif
1 ( = L)
(DEIKTHS(KOMBOS(PI)) = NIL) .
, . , 3
4. 3 (,
, ),
. 3.7,
2. 4
( 2 3.7)
(
) . , 2
3, 4.
, . , A 3.6 : ) L, ) 1 L ) 3, 4 L DEIKTHS(KOMBOS(L)).

{ }
{ }
{ }

KEAAIO 3: ENIKE ITE

86

L1

P1

l1

L2

P2

l2
N1

P3

L3
l3

N2

L4 P4
l4

N3

N4
()

3.7

() ,
()

3.4

L1

P1

l1

L2

P2

l2
N1

P3

L3
l3

N2

L4 P4
l4

N3

N4
()

-
.
-
.
, ,
. ,
, ,
. 3.4
(DL-DIAGRAFH-K),
.
while ( 2-5). 1 , . , , , - , , . while

, , . , ( 3.6).
while
- (P = NIL).

P A E I E A A Y N E E M E N H I TA

87

, , , .
, if ( 6-8).

3.4: IAPAH KOTOY KOMBOY YNEEMENH ITA

: (L) ().
: , - ,
. , .
DL-DIAGRAF-(L, )
1 PK L, I 1
{ }
2 while (PKNIL) and (IK)
{ }
3
PI P
{ }
4
PK DEIKTHS(KOMBOS(PK))
{ }
5
+1
{ }
endwhile
6 if (PNIL)
{ }
7
then DEIKTHS(KOMBOS(PI)) DEIKTHS(KOMBOS(PK)) {}
8
else print
{}
endif


.
- - .

3.3.4


. , ' '' . , , , -.
, , .

3.3

KEAAIO 3: ENIKE ITE

88

3.5



.
.

3.5 (DL-EURESH-MHDEN). (
3.4).
, while ( 2-4),
( 3). ,
( 4). ,
( 5). ,

( 6).

3.5: EYPEH MHENIKN E YNEEMENH ITA

: (L) .
: , . ,
.
DL-EURESH-MHDEN(L)
1 P L, I 0
2 while P NIL
3
if STOIXEIO(KOMBOS(P))=0
4
then I I+1
endif
5
P DEIKTHS(KOMBOS(P))
endwhile
6 print I

{ }
{ }
{ }
{ }
{ }
{ }

P A E I E A A Y N E E M E N H I TA / A E K A T H O P I E Y N E E M E N H I TA


,
(
3.6).

89

3.4

3.4


. ,
, .
3.4.1

(two-way or doubly linked list),


, (right pointer),
(left pointer).
3.8, . ,
,
() .

Pl1 L1 Pr1  Pl2 L2 Pr2


l1
l2
N1

Pl3 L3 Pr3

N2

l3

Pl4 L4 Pr4
l4

N3

N4

,
, . , .
3.4.2 K

(circular linked list)


,

3.8

KEAAIO 3: ENIKE ITE

90

3.9. , , .
3.9

L1
l1

P1  L2 P2
l2
N1
N2

L3 P3
l3
N3

L4 P4
l4
N4

3.4.3

(header linked list)


, (header),
. ,
, . ,
. ,
(circular header linked list).

, . ,
. ,
,
. , ,
, ' .
, .

() , , , , ,
.
, , , ,
. .
.

A E K AT H O P I E Y N E E M E N H I TA / Y N O H

, .

.

, ,
. ,
.


1. , . , ,
, 1993.
3.4 ,
,
(garbage
collection).
2. , . , , . ', ART of TEXT, 2
, 1992.
3.5.1. (sentinel node)
.
3. Cormen, H. T., Leiserson E. C. Rivest, L. R., Introduction to
Algorithms, McGraw-Hill, Cambridge, MA 1996 ().
11.2 Linked Lists

. ,
11.3 Implementing pointers and objects
.
4. Main M. Savitch W., Data Structures and Other Objects,
Benjamin/Cummings, Redwood City, CA 1995.

91

92

KEAAIO 3: ENIKE ITE

5.3 Linked Lists in Pascal


Searching a linked list Pascal.
5. Standish, A. T. , Data Structures, Algorithm and Software Principles,
Addison-Wesley, Reading, MA 1994.
8.6 Dynamic Memory Allocation,
Available Space Lists Garbage
Collection,
.
6. Weiss, A. M., Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, Redwood City, CA 1995.
3 Pascal.
, ,
.


, . ,
.


, :
,
,
,
,
,
.




LIFO







E

KEAAIO 4: EIIKE ITE

94

FIFO









HPIFO

4
4.1
4.2
4.3
4.4


,
.
, . , , ,
,
.

, .
,
. , ,
/.

TOIBA

95

, , , .

4.1
4.1.1 O

(stack) ,
' . ,
/ ,
(top)
. , ,
(bottom).
,
( )
. ,
.
LIFO (Last-In First-Out). , , ' , ,

.
.
, (contiguous stack)
(linked stack). ,
, , .
,
.
. ,
.
4.1 .





().

KEAAIO 4: EIIKE ITE

96

s1

.
.
.

st

() ,
()

.
.
.

.
.
.

4.1

()

s1

s2

s2

s1

()

4.1.2

, , ( )
/[1]. , .


.
4.1: EIAH E YNEXOMENH TOIBA

: (S), (), (T)


().
: , ,
. , .
SS-EISAGWGH (S, N, T, X)
1 if T = N
2
then print ''
3
else T T+1
4
S[T] X
endif

{ }
{ }
{ }
{ }

[1] , 'push' ( ) '' 'pop' () 'pull' () ''.

TOIBA

97

4.2: IAPAH E YNEXOMENH TOIBA

: (S) (T).
: , , . , .
SS-DIAGRAFH (S, T)
1 if T = 0
2
then print
3
else print S[T]
4
T T-1
endif

{ }
{ }
{ }
{ }

. 4.1 (SSEISAGWGH),
( 1-2), ( 3-4) ,
( 3) ( 4).
4.2 (SS-DIAGRAFH),
( 1-2), ( 3-4)
( 3) ,
. ,
.


.

KEAAIO 4: EIIKE ITE

98

4.3: EIAH E YNEEMENH TOIBA

: ()
(S).
: , ,
. , , .
DS-EISAGWGH (P, S)
1 if P=NIL
2
then print
3
else DEIKTHS(KOMBOS(P)) S
4
SP
endif

{ }
{ }
{ }
{ }

4.4: IAPAH E YNEEMENH TOIBA

: (S).
: , , . , .
DS-DIAGRAFH (S)
1 if S = NIL
2
then print
3
else print STOIXEIO(KOMBOS(S))
4
S DEIKTHS(KOMBOS(S))
endif

{ }
{ }
{ }
{ }

. 4.3 (DS-EISAGWGH),

( 1-2), ( 3-4) . S,
( 3), ,
.
4.4 (DS-DIAGRAFH),
(-

TOIBA

99

1-2), ( 3-4)
( 3)
,
.


.
()
- .
, .
4.1 (SS-DIAGRAFH-KP).
( 3) ( 4) while ( 2-4). , () () . ,
= 0 > ( = +1).
if ( 5-8) . ()
( 5), - ( 6).
,
.

4.1

KEAAIO 4: EIIKE ITE

100

4.1: IAPAH K TOIXEIN YNEXOMENH TOIBA

: (S), (T)
().
: ,
, . ,
, .
SS-DIAGRAFH-KP (S, T, K)
1 I1
2 while (T > 0) and (I K)
3
T T-1
4
I I+1
endwhile
5 if I = K +1
6
then print S[T+1]
7
else print S[1]
8
print ' '
endif

4.1

{ }
{ }
{ }
{ }
{ }
{ - }
{ }
{ }

.

- .
.

4.2 E
4.2.1

.
, , ,
, . ,
,

TOIBA / EAPMOE TOIBA

.
, , ...
, . , , LIFO
.

( ) (), .
,
(activation record) (stack frame),

() .
4.2
.
. ,
,

( 4.2) . ,

( 4.2) ...
. , () (
4.2),
... , ( 4.2).

101

KEAAIO 4: EIIKE ITE

102

4.2

.B

.B

.B

.A

.A

.A

.A

.A

()

()

()

()

()

()

4.2.2 E


.
() (infix notation). ,
(+), (+)*, *+*,
(operators), (.. +, *, -, /)
, (operands).

. (prefix notation) (Polish
notation)[2],
. , +, *+, +**.
(postfix notation) (reverse Polish notation), (). .., , +,
+*, **+.

[2] Jan Lukasiewicz 1951,


EAPMOE TOIBA

103

(, )
. . ,
.
,
()
.
. , ,
.
B

1
2
3
4
5
6
7

6
3
4
*
+
2
/

6
3 6
4 3 6
12 6
18
2 18
9

4 * 3 = 12
12 + 6 = 18

18 / 2 = 9


, 6 3 4 * + 2 / ( * + /
= 6, = 3, = 4 = 2),
(6 + 3*4)/2.
4.1,
(3 ). : () ,
() , ()
() ()
, ,
.

, .

4.1

KEAAIO 4: EIIKE ITE

104

4.2

,
, .., { + ( - [ + ]
/( - ))}*( - ( - ( - [ - ]))).

. ()
.

4.3
4.3.1 O

,

(
)
( ).


.
, ,
. ,
.
, FIFO (First-In First-Out).

(queue). ,
, : ) E ,
(rear) )
, (front) .
, , ,
, , , (contiguous queue)
(linked queue). 4.3
.

O Y PA

105

1
Q

...

F
qf qf+1


()

...

qr

...
()


()

qf

qf+1

...

qr
4.3


()


()

()

,
: .
. . .

4.3.2

, ,
[3].
.

F=R=0, F=R=1.
4.5 4.6.
[3] enqueue dequeue
( 'serve') .

() ,
()

KEAAIO 4: EIIKE ITE

106

4.5: EIAH E YNEXOMENH OYPA

: (Q), (), (F) (R)


().
: , , . ,
, .
SQ-EISAGWGH (Q, N, F, R, X)
1 if R > N
2
then print ' '
3
else R R+1
4
Q[R] X
5
if F = 0
6
then F 1
endif
endif

{ }
{ }
{ }
{ }
{ }
{ }

4.5 (SQ-EISAGWGH) :
( 1-2),
( 3-6), ' ( 3)
, ,
( 4). , ( 5)
( 6).
4.6 (SQ-DIAGRAFH) :
( 1-2), (
3-6), ' ( 3) (
). ( 4),
, ( ).
, ( 5),
(F = R = 1), ( 6).

O Y PA

107

4.6: IAPAH E YNEXOMENH OYPA

: (Q), (F) (R) .


: , , . ,
, .
SQ-DIAGRAFH (Q, F, R)
1 if F = 0
2
then print ' '
3
else print Q[F]
4
F F+1
5
if F > R
6
then F 0, R 0
endif
endif

{ }
{ }
{ }
{ }
{ }
{ }


F = R = N I L, F =
R NIL. 4.7 4.8.
4.7: EIAH E YNEEMENH OYPA

: (F) (R) ()
.
: , . , .
DQ-EISAGWGH (F, R, P)
1 if F=NIL
2
then F P
3
else DEIKTHS(KOMBOS(R)) P
4
DEIKTHS(KOMBOS(P)) NIL
endif
5 RP

{ }
{ }
{ }
{ }
{ }

KEAAIO 4: EIIKE ITE

108

4.7 (DQ-EISAGWGH) :
' , ( 1). ,
( 2). ,
( 3),
, ( 4). ,
, ( 5).
4.8: IAPAH E YNEEMENH OYPA

: (F) (R) .
: , , . , , .
DQ-DIAGRAFH (F, R, X)
1 if F = NIL
2
then print ' '
3
else print STOIXEIO(KOMBOS(F))
4
F DEIKTHS(KOMBOS(F))
5
if F = NIL
6
then R NIL
endif
endif

{ }
{ }
{ }
{ }
{ }
{ }

4.8 (DQ-DIAGRAFH), '


( 1) (
2). ,
( 3) F,
, ( 4). ,
( 5),
R.

4.2



, .

O Y PA

109

.
, . E,
( 4.8).
4.2 (DQ-ADEIASMA-SS).
1
( ). ,
while ( 2-5). , ,
( 3),
( 4)
, ( 5).
, ( )
( 6). , .
4.2: AEIAMA YNEEMENH OYPA E TOIBA

: (F) (R) , (S) ().


: , . , .
DQ-ADEIASMA-SS (F, R, S, T)
1 T0
2 while F NIL
3
T T+1
4
S[T] STOIXEIO(KOMBOS(F))
5
F DEIKTHS(KOMBOS(F))
endwhile
6 R NIL

{ }
{ }
{ }
{ }
{ }
{ }

KEAAIO 4: EIIKE ITE

110

4.3

. ( ,
, .)

4.4
4.4.1


. ' ,
, . ,
. , R = N,
,
.
, ,
F R. . ,
, (circular
array) , (circular queue). ' ()
() ()
. H
4.4.
, R = ( 4.5), R
R + 1), R '' (R 1) (R
(Q[R] X). F = N
( 4.6),
F (F F + 1), F '' (F 1).

E I I K O I T Y O I O Y PA

111

1
q1
q2


() F

4.4

() , ()

qn
Q

qn1

qf

qr


()
R

()

1
Q

q1 q2

qf

qr


()


()

N
qn+1 qn

()

4.4.2

(double-ended queue deque)


/
.
.

4.4.3

FIFO,
.
,
, .

KEAAIO 4: EIIKE ITE

112

,
, , . ,
HPIFO (Highest-Priority-In First-Out).

(priority queue). , ,
. .
, .
,

. , , .
. , ' ( ),
.
.
() /
. , /
.


' .
()
, . ,
, , , () , .
LIFO, -

E I I K O I T Y O I O Y PA / Y N O H

, . FIFO, , .
H
/.
.

.
HPIFO,
, .


1. ., , . ', ART of TEXT, 2
, 1992.
3.3.2
,
.
2. Main M. Savitch W., Data Structures and Other Objects,
Benjamin/Cummings, Redwood City, CA 1995.
6 7 Stacks
Queues ,
,
Pascal. :
, , , , , , .
3. Standish, A. T., Data Structures, Algorithm and Software Principles,
Addison-Wesley, Reading, MA 1994.
7 , Linear Data
Structures-Stacks and Queues,

113

114

KEAAIO 4: EIIKE ITE

.
, Pascal . .

,
. ,
.


, :

,
,
-,
,
,
.

K E A A I O 5 : E N T PA

116

5
5.1
5.2
5.3
5.4 -
5.5


,
.
,
.
,
. , , .

, .
, ().
, - .
()
.
, , AVL , .

ENIKA TOIXEIA KAI OPIMOI

117

5.1


. () () ,
, .
.
5.1 .
(nodes) (edges).
. , (root) . .
. (terminal
nodes) (leaves). , , (internal) (non terminal) .
(null tree) . ,
5.1 1 ,
2, 3, 4 8 . , (subtree)

.
E
()
0
1
2
3

N1

N3

N2
N 5 N6 N 7
N11

N8

N4

N9 N10
N12

. x (parent)
y, x

5.1

K E A A I O 5 : E N T PA

118

y. y (child) x.
. .. 5.1 4
9, 10 9, 10 . , ..
9, 10 (siblings). ,
(descendant) (ancestor). ..
12 3,
( 8). , 3 12.
,
5.1. 5.1.
5.1

(path) x 1 12
y , 1-3-8-12.
x, y .
.
(length)
.


(3), .

(level) (depth)

.

() 8
(2),
(2).

. (0),
(0).

(height)
() .


(3), .
1.

(degree)
.

2 (3),
3 (1).
(0).

E N I K A T O I X E I A K A I O P I M O I / YA I K A E N T P A

119

(3).
n n .
(binary),
(ternary) (quadtree) .

5.2
5.2.1

(2)
. [1].
, ,
, ,
.
,
.
5.2.
1 2 3.
5 10,
.
.
0 () 20 = 1, 1 21 = 2, 2 22 = 4 ...,
() k 2k. , h
20 + 21 + 22 + + 2h =

= 2h+1 - 1 [2].

k =0

[1]
.
n
[2]

k =0

xk =

x n +1 - 1
.
x -1



(),
,
,
,
()
,
.

K E A A I O 5 : E N T PA

120

N1

0
1

N3

N2

N4

N8

N9

N5

N6

N7

N10

5.2

(complete),
, , . , n . ..
5.3 () . () ,
() . () , ,
, .

()
()
()
5.3

: () , () ()

,
(almost complete)

YA I K A E N T PA

121

.
.
h n ( )
:
h log n.
.
h
(20+21+22+ +2h-1) + 1,
(h-1)
. (20+21+22+ +2h-1) = 2h-1,
(2h-1) + 1 = 2h.
n , n 2h logn log(2h) h logn.
, ( ) :
h log( n +1) -1.
:
h 2h+1-1, n n 2h+1 - 1 n + 1 2h+1 log(n + 1) log(2h+1)
h + 1 log(n + 1) h log(n + 1) - 1.
, . )
)
.

,
, . h
n = (2h+1 1) ,
. , .
(1)
() -

K E A A I O 5 : E N T PA

122

, ,
. ,
i ,
i , :
(1) 2i > n , n
, i () .
(2) i [i/2] , i > 1, [ ]
. i = 1, .
(3) i 2i, 2i n, .
(4) i 2i+1, 2i + 1 n,
.
5.4
5.2,
4.
,
.
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15
T N1 N2 N3 N4 N5 N6 N7 N8 N9 N10
[i / 2]= 2

i = 4
4

2i+1=8
.

2i + 1 = 9

5.4

. , ,
.

i
. LPi
, ,
RPi ,

YA I K A E N T PA

123

. 5.5
.
R
(root pointer).
(),
NIL, . R .
Pascal
C ( 3.2 3.2),
(.. ldeiktis, rdeiktis)
(deiktis), R.
R
LP1
RP2

LP2
RP4

LP4

T2
N2
LP5

T4
N4

RP5

T5
N5
RP8

LP8

RP1

T1
N1

RP3

LP3
LP6

RP6

T6
N6

T3
N3

LP9

T8
N8

LP7
RP9

T9
N9

RP7

T7
N7

RP10

LP10
T10
N10

5.5

5.2.2

.
, (preorder), (inorder) (postorder) .

(1) ,

K E A A I O 5 : E N T PA

124

(2) ,
(3) ,
,
...
,
(1)-(2)-(3), (2)-(1)-(3)
(2)-(3)-(1).

. ,

. ,
. ,
5.2,
1, 2, 3, , 10,
8, 9, 4, 10, 5, 2, 6, 7, 3, 1.
. ) )
(recursion). , . ,
,
, , ,
.
( 5.1) .
:
() ,
,
, .
.

YA I K A E N T PA

125

() () .
5.1 (T-PROD-DIAPERASH)
(S, T) () . () , () . ,
STOIXEIO(KOMBOS(P)) ,
ADEIKTHS(KOMBOS(P)), DDEIKTHS(KOMBOS(P)) .
5.1: POIATETAMENH IAEPAH

: (R) .
: .
.
-PROD-DIAPERASH (R)
1 T 0, P R{}
2 while P NIL
3
PROCESS(STOIXEIO(KOMBOS(P)))
4
if DDEIKTHS(KOMBOS(P)) NIL
5
then T T + 1
6
S[T] DDEIKTHS(KOMBOS(P))
endif
7
if ADEIKTHS(KOMBOS(P)) NIL
8
then P ADEIKTHS(KOMBOS(P))
9
else P S[T]
10
TT-1
endif
endwhile

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

1 ( ) ( R). ( 2-10) while. ( 3) PROCESS


( ) ().

K E A A I O 5 : E N T PA

126

, ( if,
4-6).
, ,
( ) ( if, 7-10).
NIL,
.

5.1

(9) . () , , , , , , , , , , , , , , , , , .
.

5.3
5.3.1

(binary search tree) (binary sorted tree)


,
.

(.. , ).
, 5.6
. (46)
(15, 7, 24, 18)
(52,
48, 74, 65). . ..
2 (15)
(7)
(24, 18).

Y A I K A E N T P A / YA I K A E N T P A A N A Z H T H H

127

,
()
(7, 15, 18, 24, 46, 48, 52, 65, 74,
5.6).
N1

N2

N4

46

N3

15

N5

24

N6

48

52

N7

74
5.6

N8 18

N9 65

, ,
, ,
. ,
( 2.3.2
).

5.3.2


.
:
(1)
() ,
,
() ,
.

K E A A I O 5 : E N T PA

128

(2) (1)
() ()
() () ().

, 5.2 (T-BASIKH-ANAZHTHSH). ,
.
, 5.2.
5.2: BAIKH ANAZHTHH E YAIKO ENTPO

: (R) ()
().
: . .
-BASIKH-ANAZHTHSH(R, P)
1 PX R, PXG NIL, EURESH FALSE
2 X STOIXEIO(KOMBOS(P))
3 while (not EURESH) and (PX NIL)
4
if X < STOIXEIO(KOMBOS(PX))
5
then PXG PX
6
PX ADEIKTHS(KOMBOS(PX))
7
else if X > STOIXEIO(KOMBOS(PX))
8
then PXG PX
9
PX DDEIKTHS(KOMBOS(PX))
10
else EURESH TRUE
endif
endif
endwhile

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

5.2 : PX, PXG, EURESH X. () . XG



(). EURESH -

YA I K A E N T PA A N A Z H T H H

129

, , .

( 1, 2).
while ( 3-10)
, . ,
() ( = L,
6 9) ( EURESH =
TRUE, 10). ,
, EURESH TRUE,
G
, , PXG = NIL.
, EURESH FALSE, NIL PXG
.
5.2: ANAZHTHH E YAIKO ENTPO

: (R) ()
.
: , ,
.
-ANAZHTHSH(R, P)
1 T-BASIKH-ANAZHTHSH(R, P)
2 if EURESH
3
then print
4
else print
endif

{ }
{ }
{ }
{ }

, 5.2 (TANAZHTHSH), ( 1).



( 1.2.2
).
.

K E A A I O 5 : E N T PA

130

.
( if,
2-4) ( 3) ( 4). EURESH
1.

5.3.3


, . ,
. ,
(2)
. , (2),
, ,
.
5.3
(T-EISAGWGH).
5.3, ( 1), ( 5.2). if ( 2-8)
.
(1 , 2),
( 3). ,
(2 , 4), ( )
( 5-7). , (3 ),
, ( 8). , A 5.3
22 5.6

8, 1-2-5-8.

YA I K A E N T PA A N A Z H T H H

131

5.3: EIAH E YAIKO ENTPO

: (R) ()
.
: ,
. .
-EISAGWGH(R, P)
1
2
3
4
5
6
7
8

T-BASIKH-ANAZHTHSH(R, P)
if (PX = NIL) and (PI = NIL)
then R P
else if EURESH = FALSE
then if X < STOIXEIO(KOMBOS(PI))
then ADEIKTHS(KOMBOS(PI)) P
else DDEIKTHS(KOMBOS(PI)) P
endif
else print
endif
endif

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

5.3.4


.
. , . x ,
( ):
(1) x , x
.
(2) x , x
.
(3) x ,
() x
, , (-

K E A A I O 5 : E N T PA

132

), y, (1) (2),
() x
() y.
, , y
( 3), , ,
. , , , , . , (3)
(3)
y.

5.1.

()
5.6,
() 52. 52 () 52
. 52
.
46

15

52 (3)

24

48

(3)

74

65 (3)

18

46

()
15

65

24

18

74

48

()

YA I K A E N T PA A N A Z H T H H

133

() .
52 , 65,
(3) . 52 (3) , , 65 (3).
().

, . ,
(1) (2), ,
5.4 (T-DIAGRAFH-A).
5.4: MEPIKH IAPAH E YAIKO ENTPO - A

: (R) , ()
(G) .
: . .
-DIAGRAFH-A (R, P, PG)
if (ADEIKTHS(KOMBOS(P)) = NIL) and
(DDEIKTHS(KOMBOS(P)) = NIL)
then PZ NIL
3
else if ADEIKTHS(KOMBOS(P)) = NIL
4
then PZ DDEIKTHS(KOMBOS(P))
5
else PZ ADEIKTHS(KOMBOS(P))
endif
endif
6 if PG NIL
7
then if P = ADEIKTHS(KOMBOS(PG))
8
then ADEIKTHS(KOMBOS(PG)) PZ
9
else DDEIKTHS(KOMBOS(PG)) PZ
endif
10
else R PZ
endif
1
2

{ }
{ }
{ }
{ }
{ }

{ }
{ }
{ }
{ }
{ }

134

K E A A I O 5 : E N T PA

,

.
if. ( 1-5)
,
( 2) ( 4) ( 5) . if ( 6-10)
, ( 8)
( 9) ( 10).
() ,
(3), ,
5.4 (T-DIAGRAFH-B). ,
5.4.
5.4 ,
G,
( )
. 5.4
. ( 1-5),
while,
. , , ( 2)
( 5),
( 3).
G ( 1,
4), .
()
(). R, PY, PYG,

(R, P, PG). R, PY, PYG R, P, PG .

YA I K A E N T PA A N A Z H T H H

135

5.4: MEPIKH IAPAH E YAIKO ENTPO - B

: (R) , ()
(G) .
: . .
-DIAGRAFH- (R, P, PG)
1 PYG P
2 PY DDEIKTHS(KOMBOS(P))
3 while ADEIKTHS(KOMBOS(P)) NIL
4
PYG PY
ADEIKTHS(KOMBOS(PY))
5
PY
endwhile
6 T-DIAGRAFH-A (R, PY, PYG)
7 if PG NIL
8
then if P = ADEIKTHS(KOMBOS(PG))
9
then ADEIKTHS(KOMBOS(PG)) PY
10
else DDEIKTHS(KOMBOS(PG)) PY
endif
else R PY
endif
12 ADEIKTHS(KOMBOS(PY)) ADEIKTHS(KOMBOS(P))
DDEIKTHS(KOMBOS(PY)) DDEIKTHS(KOMBOS(P))
()
(). if (
7-11),
( 9-10).
(PG =
NIL), ( 11). , ( 12-13).
()
, 5.4 (TDIAGRAFH).
( 1)
. ( 2), -

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

K E A A I O 5 : E N T PA

136

( 3). , . ( 4),
5.4 ( 5), 5.4 ( 6).
5.4: IAPAH E YAIKO ENTPO

: (R) ()
().
: , .
.
-DIAGRAFH(R, P)
1
2
3
4
5
6

T-BASIKH-ANAZHTHSH(R, P)
if EURESH = FALSE
then print
else if (ADEIKTHS(KOMBOS(PX)) = NIL) and
(DDEIKTHS(KOMBOS(PX)) = NIL)
then T-DIAGRAFH-B(R, PX, PXG)
else T-DIAGRAFH-A(R, PX, PXG)
endif
endif

{ }
{ }
{ }
{ }
{ }
{ }

5.3.5

,

.
h,
, , ,
( 5.2).
n ,
.
, n n!

YA I K A E N T PA A N A Z H T H H

137

, n n,
, , .

, , .., .
() n.
,
5.2.1 .
log(n + 1) - 1 h n
, , C(n)
log(n+1) C(n) n+1.
C(n) , f(n) = O(logn),
, C(n)
, f(n) = O(n).
f(n) = O(logn).
n , , , .
n , ,
f(n) =
O(n), .
, ,
.

: , , , ,
, , , , , , , .
) , , () ,
.
) -

5.2

K E A A I O 5 : E N T PA

138

() , .
.

5.4
5.4.1 O

-

,
,


.


, - (heap tree) (heap).
, (heapsort),
. ,
.
N1 74
N3

N2 65
N4
5.7

N8

N5 18

52
N9

24

48

N6

46

N7

9 N10


(maxheap) (minheap). , , . .
5.7 -
. , ,
(
5.2.1 -

E N T PA

139

). , (..
65) (52
18).

( 5.2.1 ), .

5.4.2 E

. :
(1) ()
,
.
(2) ()
, .

-
- 5.7,
72.
(), () (), .
() (). 72 > 18, 72 (18) (
). 72 > 65,
(65) ( ). , 72 < 74.

5.2

K E A A I O 5 : E N T PA

140

74

74

74

72

65

65

52

72

52

18

72

65

52

18

()

18

()

()

10

11

() H 74

65

48

52

18

24

46

72

[11/2] = 5
() H 74

65

48

52

72

24

46

18

48

52

65

24

46

18

[5/2] = 2
() H 74

72


, 5.5 (H-EISAGWGH).
,
, G THESH. P G
, . HESH

, , .
. , , , ( 5.2.1 ,
).

(). , while ( 2-6)

E N T PA

141

.
( 6).
( 2)
( if, 4-5). ,
if (
7). , ( 8).
5.5: EIAH E PO

: () -, ()
().
: . .
H-EISAGWGH(H, N, X)
1 N N+1, P N, THESH FALSE
2 while (P<1) and (not THESH)
3
G [P/2]
4
if X H[G]
5
then H[P] X, THESH TRUE
endif
6
H[P] H[G], P G
endwhile
7 if THESH=FALSE
8
then H[1] X
endif

{ }
{ }
{ }
{ }
{ }
{ -}
{ }
{ }

5.4.3

() ,
.
:
(1) ,
(2) ()
, , ,

K E A A I O 5 : E N T PA

142

(3) () , .

5.3


- 5.8,
.
( ).
9

74

65

65

52

18

52

()

18

()

65

65
52

18

52

18

6
()

7
()

()
(), 9,
(74), (). 65 >
48 ( 48 ) 9 < 65, 9 65. , (). , 52 > 18 9 < 52, , 9 52
. , (), 9 > 6 9 > 7,
9.

E N T PA


, 5.6 (H-DIAGRAFH).
,
(P, , AD, DD) (SUCCESS).
() , . AD DD
, , . SUCCESS ,
.

,
( 1),
.
P, AD, DD SUCCESS ( 2).
, while ( 3-9). if ( 4-8). ( 4-5) , ( 4),
( 5).
if ( 6-8) , .
(
, 6),
( 7 8). 9
AD DD ().
D
. , AD = ,
, ,
( 10), ( 11). , ( 12).

143

K E A A I O 5 : E N T PA

144

5.6: IAPAH E PO

: () -, ().
: .
().
H-DIAGRAFH(H, N)
1 X H[1], H[N], N N-1
2 P 1, AD 2, DD 3, SUCCESS FALSE
3 while (AD < ) and (not SUCCESS)
4
if ( H[AD]) and ( H[DD])
5
then H[P] , SUCCESS TRUE
6
else if H[DD] H[AD]
7
then H[P] H[AD], P AD
8
else H[P] H[DD], P DD
endif
endif
9
AD 2*P, DD 2*P+1
endwhile
10 if (AD = N) and (Z < H[AD])
11
then H[P] H[AD], P AD
12 H[P]

5.3

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

{ }
{ }
{ }

() -
.
() 75.
93
73

84
69
13

51

74
12

38
48

20

52

E N T PA / A E K AT H O P I E E N T P N

5.5 A

5.3.5 , , . ,

, .
, ,
. ,

(balanced trees).
f(n) = O(logn). :
(height
balanced trees)
(weight balanced trees).
5.5.1

. ,

, (rebalance) .
(single rotation) (double rotation).

AVL (AVL trees) - (redblack trees). AVL,
(AdelsonVelskii Landis).
(almost balanced)
(completely perfectly balanced). ,
AVL,

(1). , ,
( ) , 1, 0 1.

145

K E A A I O 5 : E N T PA

146

- ,
. () , ,
: () M () .

(2). (0 1), .
5.5.2


, .
,
. [a].

.


. , ,
. , , . . ,
. , (
) . , ,
.
.
,

.
. , , , , -

A E K AT H O P I E E N T P N / Y N O H

.
, : , ,

.

.
f(n) = O(logn) (, ), .

. .
.
-
. , . .
,
.
.
, .
, ,
, .
, . AVL,
. ,
, , .

147

K E A A I O 5 : E N T PA

148

O
1. . , , . ', ART of TEXT, 2
, 1992.
5 , AVL.
2. . , , ,
/ & , ,
1994.
4.2.1 AVL, - BB[a]. , 1
,
- .
3. T. H. Cormen, C. E. Leiserson R. L. Rivest, Introduction to
Algorithms, McGraw-Hill, 1996 ().
14 Red-Black Trees
- .
4. T. A. Standish, Data Structures, Algorithm and Software Principles,
Addison-Wesley, 1994.
9.7 Binary Search Trees Analyzing
Performance Characteristics . , AVL Trees and Their
Performance AVL,
.
5. M. A. Weis, Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, 1995.
4 Trees
Pascal . 4.4 AVL Trees
AVL.

. ,
.


, :
,
,
.

6
6.1
6.2

K E A A I O 6 : I ATA H

150

6.3
6.4



, , , . (
)
.
( ) . () , .
,
. ,
.
,
, .
, .

, . .
,
, .
, , .

6.1 E

(sorting)
, , , ,

EIAIKE ENNOIE

151

. /, ,
.
, n :
n 1, 1, , n,
:
1 2 n.

. ,
.
(sorting algorithms)
. :
(bubble sort)
(insertion sort)
(selection sort)
(quicksort)
(merge sort)
(heapsort)
(radix sort)
E . O (internal sorting
algorithms), (external sorting algorithms). ( ) /,
( )
/. .
: , , .
,
, () (-

K E A A I O 6 : I ATA H

152

1.3
).
:
() (comparisons),
,
() (interchanges), ,
() (assignments),
.
,
,
f(n) = C(n) + (n), C(n) (n)

. ,
,
, f(n) = C(n).

, .

,
A[I] A[J]
A[I] A[J]
Y A[I], A[I] A[J], A[J] Y,
, ,
.

6.2


:
(1) -

I ATA H E I O H

153

,
.
(2) , n-1 , .
(3) (2) , n-2 , .
.
.
.
(n-1) n-2 ,
(2) ,
n-1 .
, n-1
.
. ,
.


65, 42, 25, 85, 14,
56 33. ,
.

6.1

K E A A I O 6 : I ATA H

154

A2Q

A3Q

A4Q

A5Q

A6Q

A7

1

A1Q

65Q

42Q

25Q

85Q

14Q

56Q

33

2

14Q

42Q

25Q

85Q

65Q

56Q

33

3

14

25Q

42Q

85Q

65Q

56Q

33

4

14

25

33

85Q

65Q

56Q

42

5

14

25

33

42Q

65Q

56Q

85

6

14

25

33

42

56Q

65Q

85

14

25

33

42

56

65

85

,
, ,
. , 1
, 2 2 ,
3 3 ...

,


(). , 6.1 (MINSTOIXEIO). (
1.1,
1.2.2 , .)

I ATA H E I O H

155

6.1: EYPEH MIKPOTEPOY TOIXEIOY INAKA

: (), (L)
(NU) ().
: (X) (MIN) ()
.
MINSTOIXEIO(A, NL, NU)
1 X NL, MIN A[NL]
2 for I NL to NU
3
if M > A[I]
4
then X I, MIN A[I]
endif
endfor

{ }
{ }
{ }
{ }


, 6.1 (DIAT-EPILOGHS).
6.1: IATAH EIOH

: () () .
: ,
.
DIAT-EPILOGHS(A, N)
1 for K 1 to N-1
2
MSTOIXEIO (A, K, N)
3
A[K] A[X]
endfor

{ }
{ }
{ }

,
. ,
, for
( 1-3).
, 6.1
(MINSTOIXEIO) ( 2). ( 1),

K E A A I O 6 : I ATA H

156

. ,
( 3).

, .

. , ,
.
,
MINSTOIXEIO n - , ()
(). n 1 , n - 2 ... :
n(n - 1) n2 n
=
- =
f(n) = C(n) = (n-1) + (n-2) + + 2 + 1 =
2
2 2
f(n) = (n2).

6.3

(quicksort) .
(divide
and conquer). / ,
, ,
, ...,
.
:
(1)
(pivot)
-
. , ,
- .

P H O P H I ATA H

(2) (1)
..., . .
.
-. , ,
.

. ,
.

(partitioning) .
,
. .
:
(1)
, .
(2) , .
(3) ,
.
(4) (2) (3) ,
.

157

K E A A I O 6 : I ATA H

158

6.2.


20, 78, 32, 12, 65,
15, 9 38.
, -
, ,

,
, .
B

A2Q

A 3Q

A 4Q

A5Q

A6Q

A7Q

A8

1

A 1Q

20Q


78Q

32Q

12Q

65Q

15Q

9Q

38

2

20Q

78Q

32Q

12Q

65Q

15Q

9Q

38

3

20Q

9Q

32Q

12Q

65Q

15Q

78Q

38

4

20Q

12Q

9Q

15Q

12Q

65Q

32Q

78Q

38

9Q

15Q

20Q

65Q

32Q

78Q

38

1.
,
, .
.
78 ( 78 > 20) 9 ( 9 < 20).

3, . 32 ( 32 > 20) 15
( 15 < 20). 4,
, 65 12, .
, , ,
12, . , , .

P H O P H I ATA H

159

, , ( ), .

.

, 6.2 (DIAT-DIAXORISMOS).
6.2: IAXPIMO INAKA

: (), (L)
(NU) ().
: . .
DIAT-DIAXORISMOS(A, NL, NU)
1
2
3
4
5
6
7
8

X A[NL], AD NL+1, DD NU
while AD < DD
while (AD NU) and (A[AD] < X)
AD AD + 1
endwhile
while (DD NL) and (A[DD] > X)
DD DD - 1
endwhile
if AD < DD
then A[AD] A[DD]
endif
endwhile
A[NL] A[DD], P DD

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

{ -}

(AD, DD, , P). (AD, DD)


. ()
() () .
.
while
( 2-8), while if. while ( 3-4)

160

K E A A I O 6 : I ATA H

, ( 56) . if ( 7-8) .
, 9

.

, , .
, . , ,
. , , ,
.

, 6.2 (DIAT-GRHGORH).
, (SL, ) (SU, ).
()
,
. ()
SL, SU.
, .
.
( 1-4).
2 () , .
while ( 5-14), ( 0).
( 6-7).
( 8), , .
if.
, ( 9).

P H O P H I ATA H

161

, ( 10-11). (DIATDIAXORISMOS) ,
- 1 ,
NL. ,
if ( 12)
, , (
13-14). , + 1 NU .
6.2: PHOPH IATAH

: (), (L)
(NU) ().
: .
.
DIAT-GRHGORH (A, NL, NU)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

T0
if NL < NU
then T 1
SL[1] NL, SU[1] NU
endif
while T 0
NL SL[T], NU SU[T]
TT-1
DIAT-DIAXORISMOS(A, NL, NU)
if NL < - 1
then T T + 1
SL[T] NL, SU[T] - 1
endif
if + 1 < NU
then T T + 1
SL[T] + 1, SU[T] NU
endif
endwhile

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

K E A A I O 6 : I ATA H

162

6.2.


6.2, .
6.3 (DIATGRHGORH) . 6.3 (DIATDIAXORISMOS). ,
, SL SU, (
).

B


A 1Q

20Q


A 3Q

A 4Q

A5Q

A6Q

A7Q

A8

78Q

32Q

12Q

65Q

15Q

9Q

38 SL:[1]QQ

SU:[8]

SL:[ ]QQ

SU:[ ]

SL:[1, 5]Q

SU:[3, 8]

SL:[1]QQ

SU:[3]

SL:[1, 5]Q

SU:[3, 6]

1
12Q

9Q

15Q

20Q

65Q

32Q

78Q

2

3

4

A2 Q

QQQQQ

32Q

QQQQQ

32Q

9Q

12Q

15

9Q

12Q

15Q

20Q

32Q

38Q

65Q

38

38Q

65Q

38

78 SL:[1]QQ

SU:[3]

SL:[1]QQ

SU:[3]

SL:[ ]QQ

SU:[ ]

SL:[ ]QQ

SU:[ ]

78 

. (1, 8). 1
. ,
,
(1, 3) (5, 8), . (
2)
, -

P H O P H I ATA H

163

.
, , (5, 6) . ,
, ( 4).
, . ,
1,
( 4).

, 6.3 (DIAT-GRHGORHANAD).
, . , ,
.
6.3: PHOPH IATAH ME (ANAPOMH)

: (), (L)
(NU) ().
: .
.
DIAT-GRHGORH-ANAD (A, NL, NU)
1
2
3
4

if NL < NU
then DIAT-DIAXORISMOS(A, NL, NU)
DIAT-GRHGORH-ANAD (A, NL, DD-1)
DIAT-GRHGORH-ANAD (A, DD+1, NU)
endif

{ }
{ }
{ }
{ }

() ( 1), ( 2-4),
:
( 2) ( 3)

K E A A I O 6 : I ATA H

164

( 4) .
,
... () ()
( 1). (resuming) ,
, .
, , .
.
. , , n
.
,
n-1 . ,
( ),
, n-1 ..,

n(n + 1) n2 n
=
+
C(n) = n + (n-1) + + 2 + 1 =
2
2 2
. ,
f(n) = (n2).
,
.
,
f(n) = (n logn),
.

, .
, .
,
:

P H O P H I ATA H

165

2 = 21

(1) 1

1 = 20 -

()
(2) 2 4 = 22 2 = 21 ()
(3) 4 8 = 23 4 = 22 ()
(4) 8 16 = 24 8 = 23 ()

(k) 2k-1 2k

2k-1

()

, 20+21+22+ +2k-1 =

k -1

2 = 2 -1 2
i

i =0

( k) , k=log(2k) .
, n logn .
n , n logn .
f(n) 1.39 n logn.

6.2
. , . .
6.2.

6.1

,
,
( n),

6.2

K E A A I O 6 : I ATA H

166

6.2

. 6.2 ,
(.. 16),
.
6.1.

6.4

(heapsort)

,
.
. ( 5.4 - .)
:
(1) - ,
.
(2) (1) ,
.

, 6.4 (DIAT-SOROU).

. for ( 1-2)
. () , H-EISAGWGH ( 5.5), -1
, ,
, . , .
, ... , .

I ATA H P O Y

167

,
. ,
.
6.4: IATAH POY

() ().
: .
.
DIAT-SOROU(A, N)
1
2
3
4
5

for I = 1 to N-1
H-EISAGWGH(A, I, A[I+1])
endfor
while N > 1
H-DIAGRAFH(A, N)
A[N+1] X
endwhile

{ }
{ }
{ }
{ }
{ }

while ( 3-5). () , H-DIAGRAFH ( 5.6). , ()


( = 1, 3).
.
, ,
( 5). , .

K E A A I O 6 : I ATA H

168

6.3


: 45, 30, 50, 20, 75, 65.
.
,
.
, , . ,
( = 1)
,
(45). ,
. ( = 2) (50) , ,
..., .

. [ = 6(5)] (75) , , ( 5).

4,
5, .
( 3).
65
.
,
( 5),
.
, ,
, .

I ATA H P O Y

169

1 AH
I

A1Q

45Q

A2Q

A 3Q

A4Q

A5Q

A 6

30Q

50Q

20Q

75Q

65Q

1

45

30

50Q

20Q

75Q

65Q

2

50

30

45Q

20Q

75Q

65Q

3

50

30

45

20Q

75Q

65Q

4

75

50

45

20

30Q

65Q

5

75

50

65
20
()

30

45QQ

2 AH
N

A1Q

6(5) 75Q

A 2Q

A 3Q

A4Q

A5Q

A 6

50Q

65Q

20Q

30Q

45Q

5(4) 65QQ

50Q

45Q

20Q

30Q

75Q

4(3) 50Q

30Q

45Q

20Q

65

75Q

3(2) 45Q

30Q

20Q

50

65

75

2(1) 30Q


20

20Q

45

50

65

75Q

30
45
50
65
( )

75


. ,

f(n) = (n logn).
.

K E A A I O 6 : I ATA H

170

1

.
, ,
5.2.1 ,
h logn. , n C(n) nlogn .
f(n) = (nlogn).
2
,
, (
). (.. 9
() 5.3.) h logn, n ,
2logn . , n
( n ) C(n) = 2nlogn.
f(n) = (nlogn).
f(n) = (n logn),
,
.

6.3

( 6.4)
.

6.3.

( )
n () .

I ATA H P O Y / Y N O H

/.
,
/ ,
.
( ) ,
, ,
, , , , .
(), .
n-1 n .
, ,
. f(n) = (n2).

,
.
, .
...,
. f(n) = (nlogn)
f(n) = (n2) .
, - . .
.
. , () , , .
f(n) = (nlogn) .


1. . , , . , ART of TEXT, 2
, 1992.

171

172

K E A A I O 6 : I ATA H

9
().
9.12 ,
.
2. T. A. Standish, Data Structures, Algorithm and Software Principles,
Addison-Wesley, 1994.
13 Sorting .
13.1 Introduction and Motivation ,
,
. , 13.4 Divide-and-Conquer
Methods, Quicksort, Analysis of
Quicksort,
.
3. M. A. Weis, Data Structures and Algorithm Analysis, Benjamin/
Cummings, 2nd Edition, 1995.
7 Sorting,
7.7, .
Pascal
. 7.7.5 Analysis
of Quicksort .

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 1

173

1.1




, !

( )
.
.
, . , 1.1.4
.
,
.
1.2
.

MESOSOROS (A, N)

1
2
3
4
5

SUM 0
for K 1 to N
SUM SUM + A[K]
endfor
MO SUM/N
print MO

{ }
{ }
{ }
{ }
{ }

OME EOMENN

174

, ,
! , . ,
.
,
while, for,
. , .
,
. (
3 SUM). 1.4
.

1.3
,
n ,

. .

( 3): n ( 3 n )

( 1):

1 ( 1 )

( 2):

n ( n )

( 3):

n ( 3 n )

( 4):

1 ( 4 )

3n + 2

f(n) = 3n + 2.
2 ( for)
.
, . , , .

A A N T H E I A K H E N AY T O A I O O H H K E A A I N 1 & 2

1.4
) 0.5.n2, n2 = n.n > n.logn (
n > logn). f(n) = O(n2).
,
! , 1.6.

()

f n =

3n 5 log n 1 3
5 log n 1 1
+
+
= 1 +
+ .
2n
2n
2n 2
2 n
2 n

3
1
1 ,
< 1 ( n > 1)
2
n
log n
< 1 ( n > logn).
n
, f(n) = O(1).
(). ,
. ! ,
1.6.

O (

3
1
2

log n
).
n

.
2.1
) ,

, ,
. , , ,
1 = {1, , 5}, 2 = {1, 2, 3}, 3 = {1988, , 1997}.
:
1 = 5, 2 = 3 ( )

175

OME EOMENN

176

3 = 1997-1988 + 1 = 9 + 1 => 3 = 10 ( 2.1).


, 5 3 10,
150 .
, .
. ,
2.1 2.2. !
) ,
(2.11) (2.12) . m ,
m = 3,
loc( Ai1 ,i2 ,i3 ) = c0 + c1 i1 + c2 i2 + c3 i3

(2.18)

c3 = L, c2 = 3 c3, c1 = 2 c
c0 = bA - c1 nl1 - c2 nl 2 - c3 nl3
.
(2.19) :
c3 = 2, c2 = 10 2 = 20, c1 =3 20 = 60
c0 = 200 - 60 1 - 20 1 2 1988 = -3856
, (2.18)
loc( H i1 ,i2 ,i3 ) = -3856 + 60 i1 + 20 i2 + 2 i3
. ,
,

n- ( 2.11). , ! , 2.1.5
2.2 , .
) i1 = 3, i2 = 2 i3 = 1990
loc(3,2,1990) = -3856 + 60 3 + 20 2 + 2 1990 = 344.

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 2

177

1998
1989

...

5.25
5.40
1988
4.85
4.90
4.95
1 4.80
4.70
4.75


4.70

4.75


4.80


5.00

4.80


4.90

4.60

4.65

4.55

3
5.45

...

(),
. ,
. , , , .. 2, 3, 1990 3, 2,
1990. .
,
( ). , .. .
.
, ,
, (pages).

2.2
) Ai,j = Aj,i i, j. , ,
() , .
. , ,
. (i = j)
(i j),
. ,
( 2.13)

OME EOMENN

178

S=

n(n + 1)
.
2

,
n(n + 1) n(n - 1)
=
(2.20)
2
2
, L .
K = n2 -

,
. , !

, ! ,

2.1.6 .

.
) ,
,
. ,
, (2.14)
(2.15).
) , , (2.16). ,
(2.17).
)
k DA (i, j)
(j, i). , :

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 2

ANAKTS (I, J, DA)

1
2
3
4
5

if I < J
then 0
else K ((I * (I-1)/2) + J)
endif
DA[K]
print

ENHMEROSH (I, J, X, DA)

1
2
3
4

if I J
then K ((I * (I-1)/2) + J)
else K ((J * (J-1)/2) + I)
endif
DA[K] X

(i, j) (j, i)
k, I, J 2 3.
, ,
. ,
.
2.1.6
.

2.3

,
, 2.1, 2.1.
,
. .

EURESH (TRUE)
(FALSE) .
, .


, ,

179

OME EOMENN

180

, . , . ,
,
.
2.3 (GRAMANAZHTHSH-OLWN).

2.1: PAMMIKH ANAZHTHH (APAAH)

: (), () ().
: , . .
GRAM-ANAZHTHSH(A, , X)
1
2
3
4
5

6
7
8

I 1 , EURESH FALSE
while (not EURESH) and (I )
if A[I]=X
then EURESH TRUE
else I I + 1
endif
endwhile
if EURESH=TRUE
then print I
else print
endif

{ }
{ }
{ }
{ }

{ }
{ }
{ }

,
( ) ( 2) , . ,
,

.
,
. , .

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 2

181

, , .

while ( 2-6), .
( 6), if ( 3-5),
2.1. ,
! , .
.

2.3: OAH PAMMIKH ANAZHTHH

: (), () ().
: , , ,
. , .
GRAM-ANAZHTHSH-OLWN(A, , X)
1
2
3
4
5
6
7
8

I , EURESH FALSE
while I
if A[I]=X
then EURESH TRUE
print I
endif
II+1
endwhile
if EURESH=FALSE
print
endif

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

2.4

2.2.
: .
, (). ,
.

OME EOMENN

182

2.4: TPIAIKH ANAZHTHH

: (), () ().
: , , , . , .
TRIAD-ANAZHTHSH (A, , X)
1
2
3
4
5
6
7

9
10
11
12
13
14

NL 1, NU
T1 [(2*NL+NU)/3], T2 [(NL+2*NU)/3]
while (A[T1] X) and (A[T2] X) and (NL NU)
if A[T2] < X
then NL T2 + 1
else if A[T1] < X
then NL T1+1, NU T2-1
else NU T1-1
endif
endif
T1 [(2*NL+NU)/3], T2 [(NL+2*NU)/3]
endwhile
if A[1] = X
then print 1
else if A[2] = X
then print 2
else print
endif
endif

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

{ }
{ }
{ }
{ }
{ }
{M }

:
, ( ).
A L NU
() , 1 = NL + (NU - NL)/3 = (2NL + NU)/3,
T2 = NU - (NU - NL)/3 = (NL + 2NU)/3
[NL, T1] (), [T1, T2] () [T2,
NU] (). ' ,

A A N T H E I A K H E N AY T O A I O O H H K E A A I N 2 & 3

. , .
,
while. , ) , . NL > NU (), )
, [1] = [2] = . ,
while [1]
[2] NL NU. ,
. ,
! , , .
,
.
:
) > [2], , , . ,
[2 + 1, NU], [2] ,
while.
) > [1] < [2], ,
[1 + 1, 2 - 1] ,
[1], [2] ,
.
) , < [1],
, [NL, 1 - 1].
.
' , ! , , , , .
- , .

3.1

3.5 ,
, ,

183

OME EOMENN

184

. , , . ,
.

.
3.2. , !
. ,
. , ,
, ' ,
, ' .

( )
. ,
, ,
.

3.1 (DIAT-SL-EISAGWGH).
1-3. while , '
, ( 3), (
< L[]), '
( > T). , ! .
, ,
.

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 3

185

3.1: IATETAMENH EIAH E YNEXOMENH ITA

: (L), (),
(T) ().
: , . ,
,
.
DIAT-SL-EISAGWGH(L, N, T, X)
1 I1
2 while (I T) and (L[I] < X)
3
I I+1
endwhile
4 KT
5 while K I
6
L[K+1] L[K]
7
K K-1
endwhile
8 L[I] X
9 T T+1

{
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

, 4-9, 3.2,
( 1-2),
. .
,
. , ,
.
, , ,
.

3.2
, 3.3. ,
, . ,

OME EOMENN

186

, 2.3
, , 3.3.
, !
. , .

.

3.2: OAH IAPAH E YNEXOMENH ITA

: (L), (T)
().
: , , . , ,
.
SL-DIAGRAFH-OLWN(L, T, X)
1 I 1 , EURESH FALSE
2 while I
3
if L[I]=X
4
then EURESH TRUE
5
for K = I to T-1
6
L[K] L[K+1]
endfor
7
T T-1
8
else I I + 1
endif
endwhile
9
if EURESH=FALSE
10
print
endif

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

{ }
{ }


,
, ...
, ! . , , -

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 3

, , , .
.
,
3.3 (SL- DIAGRAFH-OLWN). ,
2.3 ( L ), , ( 3), ( 5-7),
( 3.3).
2.3, EURESH.

3.3

, ' ,
- - , . ,
. ,
.
, < . , , -
- -
.
- , . ,
! .
, 3.4.
- 3.4.
,
3.3, .
while ( 2-6) 3.4. , ,
, ,

187

OME EOMENN

188

if ( 3-4) -
-.
, ! . , , , .


()
, .
.
.
() . ,
, ( )
( 8). ,
( 9). ,
( ) ( 10). ,
. ,
= NIL 11
. , ! , 3.3
.

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 3

189

3.3: ENAAH TOIXEIN E YNEEMENH ITA

: (L) (, ).
: , - - , . , ,
.
DL-ENALLAGH(L, K, M)
1 P L , 1
{}
2 while (P NIL) and ( )
{ }
3
if I = K
{ }
4
then PK PM
{ }
endif
5
PM DEIKTHS(KOMBOS(PM))
{ }
6
I I+1
{ }
endwhile
7
if (PM NIL)
{ }
8
then X STOIXEIO(KOMBOS(PK))
9
STOIXEIO(KOMBOS(PK)) STOIXEIO(KOMBOS(PM))
10
STOIXEIO(KOMBOS(PM)) X
11
else print O
{ }
endif

3.4

3.6. ,
, , , . ,
.
, .

. ,

OME EOMENN

190

. , , . , !
,
. ! .

3.4:IAPAH E YNEEMENH ITA (APAAH)

: (L) ().
: , ,
. , , .
DL-DIAGRAF-S(L, X)
1 PL
{}
2 while (P NIL) and (STOIXEIO(KOMBOS(P)) X)
{}
3
PI P
{}
4
P DEIKTHS(KOMBOS(P))
{}
endwhile
5
if P = NIL
{}
6
then print
{}
7
else
DEIKTHS(KOMBOS(PI)) DEIKTHS(KOMBOS(P)) {}
endif

3.4 (DL-DIAGRAFH-S).
, . ( 1: P L)
while ( 2-4).
( STOIXEIO(KOMBOS(P)) X)
( PNIL), )
(
DEIKTHS(KOMBOS(P))).
(
, if
( 5-7). while
, if .

A A N T H E I A K H E N AY T O A I O O H H K E A A I N 3 & 4

, 3.6 . , 3.6 . ,

( = NIL). , 3 ,
.

4.1
( 4.1),
.
( 4) (
4.4). , ( ). ,
. , 4.1,
.
4.1 (DSDIAGRAFH-KP). while (
2-5),
( 4). ,
( 5), ( ,
), , ( ) . ( 8). , ! ,
.

191

OME EOMENN

192

AOPIMO A4.1: IAPAH K TOIXEIN E YNEEMENH TOIBA

E : O (S)
(K).
: E, /
. E, K .

SS-DIAGRAFH -KP (S,K)


1
2
3
4
5
6
7
8
9

I 1
while (S / NIL) and (I/K)
PI S
S DEIKTHS(KOMBOS(S))
I I+1
endwhile
if I = K + 1
then print STOIXEIO(KOMBOS(PI))
else print STOIXEIO(KOMBOS(PI))
print 'AEIA TOIBA'
endif

{A }
{ }
{E }
{E }
{E }
{ }
{E K - }
{E }
{M }

> S = NIL (
). , , if ( 6-9). ,
( 6), ,
. , -
( 7). ,
,
( 8) ( 9).
, !
, .., 7,
if, ,
. ,
.
4.1,
.

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 4

4.2

. ()

.

, . .
, :
1. ,

1.1 ,

1.2 , (
)
2. , (
)
3.
1.1,
3.1 ,
3.2 , ( )
, , , !
,
. ,
( 4.4.2).

4.3

.
.

193

OME EOMENN

194

. ,
, . .
F

Q
3

S
3
2
1

,
.
, , !

, ,
.
4.3 (SQANASTROFH) . - ( J) (S, T). for ( 2-4). , ( 3)
, , ( 4). ,
.
! while, ,
3 4 . , F
R.

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 4

195

4.3: ANATPOH YNEXOMENH OYPA

: (Q) (F) (R)


.
: , . ,
.
SQ-ANASTROFH (Q, F, R)
1 T0
2 for I F to R
3
T T+1
4
S[T] Q[I]
endfor
5
TX T, FX F
6
for J 1 to TX
7
Q[FX] S[T]
8
T T-1
9
FX FX+1
endfor

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

for ( 6-9) . ,

( 5). () (
6) (FX)
. , ( 7)
( 8) ( 9).
, ! while,
. ,
.

5.1

:

OME EOMENN

196

(1) .
, , , .
.
, . ,
.
(2)
.
- - ,

, , , ,
. , ,
. , .
. , ! , . .
(3) . (2)
, , , , ,
, .
, . , .
, ... ,
.
, ,
! , . .

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 5

5.2
() , . :
(), ,
.
(), > ,
.
(), < , .

M
K

197


. , .
, . .
(), < ,

OME EOMENN

198

, , . ,
> , .
(), > ,
. , > , T
.
, < , , , . ,
> , . ,
< , E .
, > , , , . , < , M .
, .
, . , , .
, ! , .
, .
() ( 3 ). ,

.
: , , , , , , , , , , , .
, .
() . . , ! , .
.
.
:
() . (),
( 1
).

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 5

199

() .
(1),
,
(2).
I

M
K

H
(2)

(1)

5.3
() , (1) ,
, (2) ,
, ,
( )
, (3)
.
, . ,
.

.

H1

H2

H3

H4

H5

H6

H7

H8

H9

H10 H11

H12

93

84

73

69

74

38

52

13

51

12

20

48


, 2h+1 - 1= 23+1 -1=24 -1= 16 -1 = 15,
h = 3 .

H13 H14 H15

OME EOMENN

200

. ,
. , 5.2.1

.
:
(93) (84, 73). (, )
84 (69, 74). 73 (38, 52)
... , ! ,
. , ,
.
()
( 5.4.2 ), :
(1) (75)
(),
.
(2)
:
(75)
(38). , , 75 (75 > 38
75 > 20), 73 (73 < 75).
(75)
(73). , 75 (75 > 73
75 > 52), .
, . , ! , 5.2 ( ), .

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 5 & 6

201

93

93

73

52

38

20

75

93

73

52

75

()
20

38

75

()

73

20

52

38
()

, .
H1

H2

H3

H4

H5

H6

H7

H8

H9

H10 H11

H12

93

84

73

69

74

38

52

13

51

12

48

20

75

93

84

73

69

74

75

52

13

51

12

48

20

38

93

84

75

69

74

73

52

13

51

12

48

20

38


, ! , .
5.2 .

6.1
, -

H13 H14 H15

OME EOMENN

202


, .
, . , ! () .
, , , : N ,
. .

6.1: PHOPH IATAH (APAAH)

: (), (L)
(NU) ().
: . .
DIAT-GRHGORH (A, NL, NU)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

T0
if NL < NU
then T 2
S[1] NL, S[2] NU
endif
while T 0
NL S[T], T T - 1
NU S[T], T T - 1
DIAT-DIAXORISMOS(A, NL, NU)
if NL < - 1
then T T + 1, S[T] NL
T T + 1, S[T] - 1
endif
if + 1 < NU
then T T + 1, S[T] + 1
T T + 1, S[T] NU
endif
endwhile

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 6

6.1 .
, ()
() , . ,
2.
. , ! , .
6.2,
: S[1, 8],
S[ ], S[1, 3, 5, 8], S[1, 3], S[1, 3, 5, 6], S[1, 3], S[1, 3], S[ ], S[ ]. .

6.2

6.2 .
:
( ), () , , ,
.

6,
, ( 8).
.

, ! ,
. ,
6.2, .
, ,
6 7, , , , , .

203

OME EOMENN

204

, .
, , 6.2 (DIATGRHGORH-EPILOGHS).
5-7 .
6.2.

6.2: PHOPH IATAH ME EIOH

DIAT-GRHGORH-EPILOGHS (A, NL, NU)


1
2
3
4
5
6
7
8

< 1-4 6.2>


while T 0
NL SL[T], NU SU[T]
TT-1
if NU - NL < M
then DIAT-EPILOGHS (A, NL, NU)
else DIAT-DIAXORISMOS(A, NL, NU)
endif
< 9-14 6.2>
endwhile

{ }
{ }
{ }
{ }
{ }


,
6.1. 6.1 A, NU-NL. ,
() 1
, [1, ], [NL, NU], NL > 1
NU < N. , 6.1
. ,
! , .

, 6.1

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 6

205

6.1: IATAH EIOH (APAAH)

DIAT-EPILOGHS(A, NL, NU)


1 for K NL to NU-1
2
MSTOIXEIO (A, K, NU)
3
A[K] A[X]
endfor

{ }
{ }
{ }

6.3
,
.
, ( 5.4.1 ), , ,
, .
,
() .
.
, , . ,
, . ,
.

() .

, .
,
6.4. , . 6.3,
2 , 65 -

OME EOMENN

206

5,
75 6 , 5,
65 6.
.
, ! .
,
6.4.
6.4 ,
. 6.3 (DIATSOROU-D), 6.4.

4 5 . ( 6-9) for,

( 10). ,
( 1). , 3 ( 4, > 0), , ,
.

A A N T H E I A K H E N AY T O A I O O H H K E A A I O Y 6

207

A6.3: IATAH POY (INOYA)

: () ().
: .
.
DIAT-SOROU-D(A, N)
LN
for I = 1 to N-1
H-EISAGWGH(A, I, A[I + 1])
endfor
4 while N > 0
5
H-DIAGRAFH(A, N)
6
M L - (N + 1)
7
for J 1 to M
8
K L - (M - J)
9
A[K - 1] A[K]
endfor
10
A[N + 1] X
endwhile
1
2
3

{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }
{ }

1 ,
. 6
( ). for ( 9).
. , ,
, .
, .
. ,

6.3 .

OME EOMENN

208

.
.


.

2 AH
N

A 1Q

6(5) 75Q

A 2Q

A 3Q

A4Q

A5Q

A 6

50Q

65Q

20Q

30Q

45Q

5(4) 65QQ

50Q

45Q

20Q

30Q

75Q

4(3) 50Q

30Q

45Q

20Q

75

65Q

3(2) 45Q

30Q

20Q

75

65

50Q

2(1) 30Q

20Q

75

65

50

45Q

1(0) 20Q

75

65

50

45

30

65

50

45

30

20

75

A A N T H E I PA T H P I O T H T N

2.1
, , . , , .. , .
, . , ,
.
() ,
, ().
,
, , (, .. ),
, /. .
,
, ( 1.1 1.1.4).

'', -- .

3.1
.
:
, , .


,
. .

209

OME EOMENN

210


.
. .


, .
,
. ,
,
, . , , (dynamic memory allocation).

, , , , .
(1),
(n), n ,
. ,
, ,
(1).
, , ,

. , , , (1),
, , (n)
. , , , (n).

A A N T H E I PA T H P I O T H T N


,
, .
, , . n > T.S/(D + S), n , T
, S D ,
.
,
, .

211

API OPN

(Algorithm):
() /.
(Sorting algorithm):
()
.
(Search):
.
(Data structure representation):

/.
(Higher-level structure): .
(Singly linked list):
, (),
() .
(Time efficiency): .
(Space efficiency):
.
(Abstract data type): .
(Weight balanced tree):

.
(General list): () .
(General tree): .
(Pseudocode):
.
(Linear search): -

213

OME EOMENN

214

( ), ,
.
(Linear structure):
( )
,
.
(Quicksort):
( ) , , .
(Index):
.
(Pointer):
/.
- (Heap): .
(Deletion):
.
(Traversal):

.
(Flow control structure):
.
if (If structure):

.
(Selection sort): n-1
( n).
.
for (For structure):

API OPN


.
(Row-major order):
/ .
(Column-major order):
/ .
(Heapsort):

.
while (While structure): .
(Double-ended queue Deque):

.
(Data structure): ( ) .
(Sequential access structure):
, , . ,

.
(Random access structure): .
(Binary search): ,
(
) .
(Binary search tree):
-

215

OME EOMENN

216


.
(Dynamic structure):
( )
.
(Two-dimensional array): .
(Record):
, .
(Insertion):

.
(Interchange):
.
(Inorder traversal):
: .
(External sorting):
( )
/.
(Internal sorting): ( ) /.
(Heterogeneous structure):
.
(Fundamental structure):
.
(Balanced tree): .
(Assignment):
.

API OPN

(Lower triangular array):


.
(Key):
.
(Node): .
(Circular queue):
.
FIFO (First-In First-Out Logic):

.
HPIFO (Highest-Priority-In First-Out Logic):
() () .
LIFO (Last-In First-Out Logic):
() () .
(Variable): , .
(Pointer variable):
, /. .
(Indexed variable):
.
(Postorder traversal):
:
.
(Non-linear structure):
.
.
(One-dimensional array):

217

OME EOMENN

218

.
(Homogeneous structure):
.
(Queue):
. FIFO.
(Priority queue):
, . HPIFO.
(Upper triangular array):
.
(Field): .
(Array of records): .
(Complete tree): , ,
.
(Multi-dimensional array):
n (n > 1).
(Complexity):
.
(Polish notation): ( )
(, ).
(Operations):
.
(Preorder traversal):

.

API OPN

(Root): ,
.
(Static structure):
( ) .
(Stack):
() . LIFO.
(Comparison):
.
(Symmetric array):
.
(Array mapping function):
( )
.
(Complexity function):
.
(Linked representation):
().
(Link): . .
(Contiguous representation):

.
.
(Index set):
.

219

OME EOMENN

220

(Rectangular array):
.
(Tridiagonal array):
,
() , ( ) (
).
(Data type):
.
(Subtree):
.
(Height balanced tree):
.

B I B I O PA I A

., , , , 1993.
., , , , , 1987.
., , . , , ART of
TEXT, 2 , 1992.
. ., , ,
, 1994.
Wirth ., & , , , 1990.

Adamson I. A., Data Structures and Algorithms: A First Course,


Springer-Verlag, London, 1996.
Cormen T. H., Leiserson C. E., Rivest R. L., Introduction to
Algorithms, McGraw-Hill, New York, NY, 1996.
Horowitz E., Sahni S., Fundamentals of Data Structures in Pascal,
2nd Edition, Computer Science Press, Rockville, ML, 1987.
Knuth D. E., The Art of Computer Programming, Vol. 1: Fundamental
Algorithms, Addison-Wesley, Reading, MA, 1973.
Knuth D. E., The Art of Computer Programming, Vol.3: Sorting and
Searching, Addison-Wesley, Reading, MA, 1973.
Kruse R. L., Data Structures and Program Design, 2nd Edition,
Prentice Hall, Englewood Cliffs, NJ, 1987.
Lipschutz S., Schaums Outline of Theory and Problems of Data
Structures, Schaums Outline Series in Computer Science,
McGraw-Hill, New York, NY, 1986.
Main M., Savitch W., Data Structures and Other Objects, Turbo
Pascal Edition, Benjamin/Cummings, Redwood City, CA, 1995.
Mehlhorn K., Data Structures and Algorithms 1: Sorting and
Searching, Springer-Verlag, Berlin, Germany, 1984.

221

222

OME EOMENN

Shaffer C. A., A Practical Introduction to Data Structures and


Algorithm Analysis, Prentice Hall, Upper Saddle River, NJ, 1997.
Smith H. F., Data Structures, Form and Function, Harcourt Brace
Jovanovich, Orlando, FL, 1987.
Standish T. A., Data Structures, Algorithm and Software Principles,
Addison-Wesley, Reading, MA, 1994.
Stubbs D. F., Webre N. W., Data Structures with Abstract Data Types
and Pascal, 2nd Edition, Brooks/Cole, Pacific Grove, CA, 1989.
Tenenbaum A. M. and Augenstein M. J., Data Structures Using
Pascal, 2nd Edition, Prentice Hall, Englewood Cliffs, NJ, 1986.
Weiss M. A., Data Structures and Algorithm Analysis, 2nd Edition,
Benjamin/Cummings, Redwood City, CA, 1995.

You might also like