1) Διαίρει και Βασίλευε
1.1) Ο αλγόριθμος MergeSort (Ταξινόμηση με Συγχώνευση)
1.2) Ο αλγόριθμος QuickSort (Γρήγορη Ταξινόμηση)
1.3) Ο αλγόριθμος QuickSelect (Γρήγορη Επιλογή)
1.4) Ο αλγόριθμος Strassen για τον πολλαπλασιασμό πινάκων
Ασκήσεις
1) Απληστοι Αλγόριθμοι
1.1) Συντομότερο Μονοπάτι σε Γράφο
1.1.1) Ο αλγόριθμος του Dijkstra
1.2) Ελάχιστο Συνδετικό Δένδρο
1.2.1) Ο αλγόριθμος του Prim
1.2.2) Ο αλγόριθμος του Kruskal
1.3) Ελαχιστοποίηση Νομισμάτων με Ρέστα
Εφαρμογές
1) Επιστροφή χρηματικού ποσού για ρέστα
2) Άπληστος Αλγόριθμος για Χρωματισμό Γραφήματος
1) ΑΣΥΜΠΤΩΤΙΚΟΙ ΣΥΜΒΟΛΙΣΜΟΙ
1.1) Ο ασυμπτωτικός συμβολισμός ο
1.2) Ο ασυμπτωτικός συμβολισμός Ο
1.3) Ο ασυμπτωτικός συμβολισμός Θ
1.4) Ο ασυμπτωτικός συμβολισμός Ω
1.5) Ο ασυμπτωτικός συμβολισμός ω
2) ΧΡΗΣΗ ΟΡΙΩΝ ΓΙΑ ΤΗΝ ΑΠΟΔΕΙΞΗ ΑΣΥΜΠΤΩΤΙΚΩΝ ΣΥΜΒΟΛΙΣΜΩΝ
3) ΛΗΜΜΑΤΑ ΣΤΟΥΣ ΑΣΥΜΠΤΩΤΙΚΟΥΣ ΣΥΜΒΟΛΙΣΜΟΥΣ
Ασκήσεις
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1.Διαχείριση Μνήμης
1.1.Στατική Δέσμευση Μνήμης
1.2.Στατική Δέσμευση Μνήμης για Συνήθεις Μεταβλητές
1.3.Στατική Δέσμευση Μνήμης για Αντικείμενα
2.Δυναμική Δέσμευση Μνήμης
2.1.Δείκτες (Υπενθύμιση από C)
2.2.Οι τελεστές new και delete
2.3.Δυναμική Δέσμευση για Συνήθεις Μεταβλητές
2.4.Δυναμική Δέσμευση για Αντικείμενα
2.5.Δυναμική Δέσμευση και Κατασκευαστές
3.Κλάσεις που περιέχουν δείκτες
3.1.Παράδειγμα κλάσης που περιέχει δείκτες
3.2.…και ένα πρόβλημα (χωρίς λύση για την ώρα)
4..Δυναμική Δέσμευση Μνήμης για Πίνακες
4.1.Μονοδιάστατοι πίνακες
4.2.Παράδειγμα δέσμευσης μνήμης για μονοδιάστατους πίνακες
4.3.Διδιάστατοι πίνακες
4.4.Παράδειγμα δέσμευσης μνήμης για διδιάστατους πίνακες
B. Ασκήσεις
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
Α. Θεωρία
1. Κλάσεις
1.1 Γενικά
1.2 Ορισμός Κλάσης
1.3 Δημόσια (public) στοιχεία της κλάσης
1.4 Ιδιωτικά (private) στοιχεία της κλάσης
1.5 Παράδειγμα (προδιαγραφές)
2 Περισσότερα για τις κλάσεις
2.1 Ορισμός Συναρτήσεων έξω από την Κλάση
2.2 Παρουσίαση Ιδιωτικών – Δημόσιων Μέλων μιας κλάσης
2.3 Χωρισμός σε Αρχεία
3. Ειδικές Μεθόδοι Κλάσεων
3.1 Γενικά
3.2 Κατασκευαστής (constructor)
3.3 Καταστροφέας (destructor)
3.4 Ελεγκτές Πρόσβασης (accessors)
B. Ασκήσεις
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
ΠΕΡΙΕΧΟΜΕΝΑ ΜΑΘΗΜΑΤΟΣ
Α. Θεωρία
1. Η Γλώσσα C++
1.1. Γενικά
1.2. Ιστορία – Εκδόσεις
1.3. Η αναγκαιότητα της C
1.4. Μεταγλωττιστές
2. Hello World!
2.1. Πηγαίος Κώδικας
2.2. Σχόλια
2.3. Βιβλιοθήκη iostream
2.4. main, block κώδικα, return
2.5 Είσοδος/Έξοδος
2.5.1. Έξοδος με την cout
2.5.2. Οδηγία using
2.5.3. Περισσότερα για την cout
2.5.4. Είσοδος με την cin
3. Στοιχεία της C
3.1. Μεταβλητές
3.2. Σταθερές
3.3. Τελεστές και η Δομή Ελέγχου
3.4. Δομές Επανάληψης
3.5. Συναρτήσεις
3.5.1. Πολυμορφισμός Συναρτήσεων
3.6. Πίνακες
3.7. Συμβολοσειρές
3.8. Δείκτες
B.Ασκήσεις
Εφαρμογή 1
Εφαρμογή 2
Εφαρμογή 3
1. !" #$# # #%$& '$ %
• ($&$# $)* +,!$ '$)* , - .*/
!
• % (- 0 (- !& $)*/ "
#
$
• %#! $( *# , - !" #$#/ %
&
!1( 0 *# % 2 1 # #$ ' 2/
34 ! 1 ' (- 0 2 56789:;;6! ' (#)$
<4 ! ' )$(- !!# !#' #' (- * %)*! ' (#)*$
=4 ,1 '$& *" #% ! 0>#! ' +#),$!
?4 *$ ($ * $ ' @% %! #$ 0 *( * A& # BCDEF! ' #)-$!
+" #$# >#'&- !1( 0 *# % 2 1G 2
.! ' & #*# %( #!1( 0
-! / #*# %" ' ,'& 0
# $
*! / 1 $ - ' *0"% -
!
2! 3 0
# >! '& # ( % $) - $#
*)$
4! / #*#!& $ %( #!1( 0
5! 6 0 ! ! %($&$#
@*) H 1 #/
/
$) H 1 #/
:
5IJKLDMMI
N B F
procedure FibRec(n)
if n=1 or n=2 then
return 1
else
a=FibRec(n-1)
b=FibRec(n-2)
c=a+b
return c
end if
end procedure
/ 7 )
O / )8 9:;<)=>>:
/
• 6 .?)
2,
21,1
21 nff
nn
f
nn
n
(1), 1 2
( )
( 1) ( 2) (1), 2
n n
T n
T n T n n
N B N F
procedure FibSeq(n)
A[1]=1
A[2]=1
for i=3 to n
A[i]=A[i-1]+A[i-2]
end for
return A[n]
end procedure
!1( 0 4 4:
@#)$A+#)$
/
B.B-B*B2
B. 4C* D- *C2 D* 2CE D2 EC- D4 -C*
B ! 1 ' 2 $&- ,!$ '$&- !2'&-F/
/ 1, 2,…, n Ai
di-1 x di.
O /
1 x 2 x … x n
/
• 6
&
N B N F
procedure DP_MatMult(A1,A2,…,An)
for i=1 to n
m[i,i]=0
end for
for p=2 to n
for i=2 to n-p+1
j=i+p-1
m[i,j]=+
for k=1 to j-1
q=M[i,k]+M[k+1,j]+d[i-1]*d[k]*d[j]
if (q>M[i,j]) then M[i,j]=q ,
s[i,j]=k
end for
end for
end for
return M[1,n]
end procedure
!1( 0 4 4:
@#)$A #)*$
jidddjkMkiM
ji
jiM
jki
jki
,],1[],[min
,0
],[
1
/
FA=7>PQ GAH7P=Q
B ! 1 ' 2 $&- ,!$ '$&- !2'&-F/
/
X=x1x2x3…xn Y=y1y2…ym
O / To
/
• 6
&
N B F
procedure LCS( , )
for i=1 to n : c[i,0]=0
for j=1 to m : c[0,j]=0
for i=1 to n
for j=1 to m
if xi=yj then
c[i,j]=c[i-1,j-1]+1
else
if (c[i-1,j]>c[i,j-1]) then
c[i,j]=c[i-1,j]
else
c[i,j]=c[i,j-1]
end if
end if
end for
end for
return c[n,m]
end procedure
!1( 0 4 4:
@#)$A #),$
ji
jin
yxjijicjic
yxjijic
ji
f
0,},],1[],1,[max{
0,,1]1,1[
00,0
2. H
/ &
# I
. - ? )$
/ / &
JA#K L M$
O / @< &
/
• B& 1 1
#N: NO$ :PO #
$
• 0
:A. ? )!
3 < = ? R
(Q@R.SAS
. S T - A -
(Q@R-SA<
. S T 4 A 4
- < T 2 A 5
(Q@R*SAR
. S T .- A .-
- < T U A V
* R T 4 A .W
(Q@R2SAT
* R T E A .*
2 T T 4 A .2
(Q@R4SA3=
!
"
!1( 0 4 4:
@#)$A #)T,$