SlideShare a Scribd company logo
1 of 52
Download to read offline
Αλγόριθµοι σε C
Μάθηµα 3:
Ταξινόµηση Πίνακα
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Θεωρία
1. Ταξινόµηση Πίνακα
1. Ορισµός του Προβλήµατος
2. Ταξινόµηση µε Εισαγωγή
1. Ιδέα του Αλγορίθµου
2. Κώδικας σε C
3. Παράδειγµα Εκτέλεσης
4. Άσκηση
3. Ταξινόµηση µε Επιλογή
1. Ιδέα του Αλγορίθµου
2. Κώδικας σε C
3. Παράδειγµα Εκτέλεσης
4. Άσκηση
4. Ταξινόµηση Φυσαλίδας
1. Ιδέα του Αλγορίθµου
2. Κώδικας σε C
3. Παράδειγµα Εκτέλεσης
4. Άσκηση
2∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
5. Ταξινόµηση µε Συγχώνευση
1. Ιδέα του Αλγορίθµου
2. Κώδικας σε C
3. Παράδειγµα Εκτέλεσης
4. Η merge
5. Άσκηση
6. Γρήγορη Ταξινόµηση
1. Ιδέα του Αλγορίθµου
2. Κώδικας σε C
3. Παράδειγµα Εκτέλεσης
4. Άσκηση
Β. Ασκήσεις
A. Θεωρία
1. Αναζήτηση Στοιχείου σε Πίνακα
1. Ορισµός του Προβλήµατος
3∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Η «Ταξινόµηση Πίνακα» είναι το υπολογιστικό πρόβληµα στο οποίο:
• Είσοδος: Ένας Πίνακας Στοιχείων
• Έξοδος: Ο ίδιος Πίνακας µε τα στοιχεία του Ταξινοµηµένα
Τα στοιχεία ταξινοµούνται:
Σε αύξουσα σειρά (από το µικρότερο στο µεγαλύτερο) [Σηµείωση: Θα µελετήσουµε την
ταξινόµηση σε αύξουσα σειρά στη θεωρία]
Σε φθίνουσα σειρά (από το µεγαλύτερο στο µικρότερο)
Θα µελετήσουµε 5 αλγόριθµους:
Την Ταξινόµηση µε Επιλογή (Selection Sort)
Την Ταξινόµηση µε Εισαγωγή (Insertion Sort)
Την Ταξινόµηση Φυσαλίδας (Bubble Sort)
Την Ταξινόµηση µε Συγχώνευση (Merge Sort)
Την Γρήγορη Ταξινόµηση (Quick Sort)
A. Θεωρία
2. Ταξινόµηση µε Επιλογή (Selection Sort)
1. Αλγοριθµική Ιδέα
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 4
Ι∆ΕΑ της Selection Sort:
• Έχοντας ταξινοµήσει τα στοιχεία 0..i-1
• επέλεξε το ελάχιστο ανάµεσα στα i έως N-1 και τοποθέτησε το στην θέση i
1 3 … 8 14 15 32 9 … 19
Ταξινοµηµένος Αταξινόµητος
1
swap
2
Υλοποίηση:
• Στο βήµα i (0UN-1)
• Βρίσκω το ελάχιστο στις θέσεις i..N-1
• Το κάνω swap µε το στοιχείο στη θέση i
Ακολουθεί ο κώδικας σε C: Ο pinakas είναι ένας πίνακας Ν ακεραίων:
A. Θεωρία
2. Ταξινόµηση µε Επιλογή (Selection Sort)
2. Κώδικας σε C
5∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
/* Taksinomisi Selection Sort */
for (i=0; i<N; i++)
{
pos=i;
for (j=i+1; j<N; j++)
{
if (pinakas[j]<pinakas[pos])
pos=j;
}
swap(&pinakas[i], &pinakas[pos]);
}
A. Θεωρία
2. Ταξινόµηση µε Εισαγωγή (Insertion Sort)
3. Ένα Παράδειγµα Εκτέλεσης
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 6
9 2 4 7 1 8 6 3i=0:
1 2 4 7 9 8 6 3i=1:
1 2 4 7 9 8 6 3i=2:
1 2 3 7 9 8 6 4i=3:
1 2 3 4 9 8 6 7i=4:
1 2 3 4 6 8 9 7i=5:
1 2 3 4 6 7 9 8i=6:
1 2 3 4 6 7 8 9i=7:
Αρχικός Πίνακας: 9 2 4 7 1 8 6 3
Τελικός Πίνακας: 1 2 3 4 6 7 8 9
A. Θεωρία
2. Ταξινόµηση µε Επιλογή (Selection Sort)
4. Άσκηση
7∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αφού µελετήσετε το πρόγραµµα selection_sort.c κατασκευάσετε συνάρτηση που παίρνει ως όρισµα
έναν πίνακα ακεραίων (και τη διάστασή του) και τον ταξινοµεί µε χρήση της selection sort.
A. Θεωρία
3. Ταξινόµηση µε Εισαγωγή (Insertion Sort)
1. Αλγοριθµική Ιδέα
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 8
Ι∆ΕΑ της Insertion Sort:
• Έχοντας ταξινοµήσει τα στοιχεία 0..i-1
• Τοποθετεί το στοιχείο i ταξινοµηµένα στις θέσεις 0..i (µε ανταλλαγές µέχρι να βρει µικρότερο)
1 3 … 7 14 15 9 32 … 4
Ταξινοµηµένος Αταξινόµητος
swap
Υλοποίηση:
• Στο βήµα i (1UN-1)
• Κάνω συνεχή swap του στοιχείου i αριστερά, µέχρι να βρω κάποιο µικρότερο στοιχείο
swap
Ακολουθεί ο κώδικας σε C: Ο pinakas είναι ένας πίνακας Ν ακεραίων:
A. Θεωρία
3. Ταξινόµηση µε Εισαγωγή (Insertion Sort)
2. Κώδικας σε C
9∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
/* Taksinomisi me Eisagogi */
for (i=1; i<N; i++)
{
for (j=i; j>=1; j--)
{
if (pinakas[j]<pinakas[j-1])
swap(&pinakas[j], &pinakas[j-1]);
else
break;
}
}
A. Θεωρία
3. Ταξινόµηση µε Εισαγωγή (Insertion Sort)
3. Ένα Παράδειγµα Εκτέλεσης
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 10
9 2 4 7 1 8 6 3i=1:
2 9 4 7 1 8 6 3i=2:
2 4 9 7 1 8 6 3i=3:
2 4 7 9 1 8 6 3i=4:
1 2 4 7 9 8 6 3i=5:
1 2 4 7 8 9 6 3i=6:
1 2 4 6 7 8 9 3i=7:
Αρχικός Πίνακας: 9 2 4 7 1 8 6 3
Τελικός Πίνακας: 1 2 3 4 6 7 8 9
A. Θεωρία
3. Ταξινόµηση µε Εισαγωγή (Insertion Sort)
4. Άσκηση
11∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αφού µελετήσετε το πρόγραµµα insertion_sort.c κατασκευάσετε συνάρτηση που παίρνει ως όρισµα
έναν πίνακα ακεραίων (και τη διάστασή του) και τον ταξινοµεί µε χρήση της insertion sort.
A. Θεωρία
4. Ταξινόµηση Φυσαλίδας (Bubble Sort)
1. Αλγοριθµική Ιδέα
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 12
Ι∆ΕΑ της Bubble Sort:
• Έχοντας ταξινοµήσει τα στοιχεία 0..i-1
• Τα ελαφρύτερα (µικρότερα) στοιχεία αναδύονται µε µία σάρωση στις θέσεις Ν-1Ui
1 … 5 12 14 15 7 11 … 8
Ταξινοµηµένος Αταξινόµητος
Υλοποίηση:
• Στο βήµα i (0UN-1)
• Για j=N-1 έως i+1: Κάνω swap του PIN[j] µε το PIN[j-1] εάν PIN[j]<PIN[j-1]
Ακολουθεί ο κώδικας σε C: Ο pinakas είναι ένας πίνακας Ν ακεραίων:
A. Θεωρία
4. Ταξινόµηση Φυσαλίδας(Bubble Sort)
2. Κώδικας σε C
13∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
/* Taksinomisi Fysalidas */
for (i=0; i<N; i++)
{
for (j=N-1; j>=i+1; j--)
{
if (pinakas[j]<pinakas[j-1])
swap(&pinakas[j], &pinakas[j-1]);
}
}
A. Θεωρία
4. Ταξινόµηση Φυσαλίδας(Bubble Sort)
3. Ένα Παράδειγµα Εκτέλεσης
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 14
9 2 4 7 1 8 6 3i=0:
1 9 2 4 7 3 8 6i=1:
1 2 9 3 4 7 6 8i=2:
1 2 3 9 4 6 7 8i=3:
1 2 3 4 9 6 7 8i=4:
1 2 3 4 6 9 7 8i=5:
1 2 3 4 6 7 9 8i=6:
1 2 3 4 6 7 8 9i=7:
Αρχικός Πίνακας: 9 2 4 7 1 8 6 3
Τελικός Πίνακας: 1 2 3 4 6 7 8 9
A. Θεωρία
4. Ταξινόµηση Φυσαλίδας(Bubble Sort)
4. Άσκηση
15∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αφού µελετήσετε το πρόγραµµα bubble_sort.c κατασκευάσετε συνάρτηση που παίρνει ως όρισµα
έναν πίνακα ακεραίων (και τη διάστασή του) και τον ταξινοµεί µε χρήση της bubble sort.
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
1. Αλγοριθµική Ιδέα
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 16
Ι∆ΕΑ της Merge Sort:
1. (Αναδροµικά) Ταξινόµησε το αριστερό µισό του πίνακα
2. (Αναδροµικά) Ταξινόµησε το δεξί µισό του πίνακα
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
1 4 6 7 9 11 18 20
8 9 10 11 12 13 14 15
2 3 5 10 13 14 19 22
3. Συγχώνευσε τα δύο κοµµάτια σε µία ταξινοµηµένη ακολουθία
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 9
0 1 2 3 4 5 6 7
1 4 6 7 9 11 18 20
8 9 10 11 12 13 14 15
2 3 5 10 13 14 19 22
Το σώµα του αλγορίθµου φαίνεται στον ακόλουθο κώδικα (o πίνακας έχει δηλωθεί ως int
pinakas[N] και οι µεταβλητές start,finish, middle είναι ακέραιες µεταβλητές):
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
1. Αλγοριθµική Ιδέα
17∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
void mergesort(int *pinakas, int start, int finish)
{
int i,middle;
if (start==finish) /* 1 stoixeio */
return;
else if (start==finish-1) /* 2 stoixeia */
{
if (pinakas[start]>pinakas[finish])
swap(&pinakas[start], &pinakas[finish]);
}
else
{
middle=(start+finish)/2;
mergesort(pinakas,start,middle);
mergesort(pinakas,middle+1,finish);
merge(pinakas,start,finish);
}
}
18∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Πίνακας προς ταξινόµηση:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 9 10 13
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
19∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση MergeSort(Α,0,15)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
20∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,0,7)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
18 7 4 11
4 5 6 7
9 20 6 1
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
21∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,0,3)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
18 7 4 11
4 5 6 7
9 20 6 1
0 1
18 7
3 4
4 11
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
22∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,0,1): Ταξινοµηση του υποπίνακα
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
18 7 4 11
4 5 6 7
9 20 6 1
0 1
7 18
2 3
4 11
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
23∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,2,3): Ταξινοµηση του υποπίνακα
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
18 7 4 11
4 5 6 7
9 20 6 1
0 1
7 18
2 3
4 11
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
24∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,0,3): Συγχώνευση των δύο υποπινάκων
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
4 7 11 18
4 5 6 7
9 20 6 1
0 1
7 18
2 3
4 11
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
25∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,4,7)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
4 7 11 18
4 5 6 7
9 20 6 1
0 1
7 18
2 3
4 11
4 5
9 20
6 7
6 1
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
26∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,4,5): Ταξινοµηση του υποπίνακα
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
4 7 11 18
4 5 6 7
9 20 6 1
0 1
7 18
2 3
4 11
4 5
9 20
6 7
6 1
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
27∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,6,7): Ταξινοµηση του υποπίνακα
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
4 7 11 18
4 5 6 7
9 20 6 1
0 1
7 18
2 3
4 11
4 5
9 20
6 7
1 6
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
28∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,4,7): Συγχώνευση των δύο υποπινάκων
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
18 7 4 11 9 20 6 1
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
4 7 11 18
4 5 6 7
1 6 9 20
0 1
7 18
2 3
4 11
4 5
9 20
6 7
1 6
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
29∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,0,7): Συγχώνευση των δύο υποπινάκων
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
1 4 6 7 9 11 18 20
8 9 10 11 12 13 14 15
22 19 14 5 2 3 10 13
0 1 2 3
4 7 11 18
4 5 6 7
1 6 9 20
0 1
7 18
2 3
4 11
4 5
9 20
6 7
1 6
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
30∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αντίστοιχα θα γίνουν όλες οι αναδροµικές κλήσεις στο (8,15)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13
0 1 2 3 4 5 6 7
1 4 6 7 9 11 18 20
8 9 10 11 12 13 14 15
2 3 5 10 13 14 19 22
0 1 2 3
4 7 11 18
4 5 6 7
1 6 9 20
0 1
7 18
2 3
4 11
4 5
9 20
6 7
1 6
8 9 10 11
5 14 19 22
12 13 14 15
2 3 10 13
8 9
19 22
10 11
5 14
12 13
2 3
14 15
10 13
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
31∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Αναδροµική Κλήση (A,0,15): Συγχώνευση των δύο υποπινάκων
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 9 10 11 13 14 18 19 20 22
0 1 2 3 4 5 6 7
1 4 6 7 9 11 18 20
8 9 10 11 12 13 14 15
2 3 5 10 13 14 19 22
0 1 2 3
4 7 11 18
4 5 6 7
1 6 9 20
0 1
7 18
2 3
4 11
4 5
9 20
6 7
1 6
8 9 10 11
5 14 19 22
12 13 14 15
2 3 10 13
8 9
19 22
10 11
5 14
12 13
2 3
14 15
10 13
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
3. Ένα Παράδειγµα Εκτέλεσης
32∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Η διαδικασία merge δουλεύει ως εξής:
Σαρώνει τους δύο πίνακες ταυτόχρονα από αριστερά προς τα δεξιά.
Συγκρίνει τα δύο τρέχοντα στοιχεία των πινάκων
Επιλέγει το µικρότερο και το βάζει στην επόµενη θέση της ταξινοµηµένης ακολουθίας
Όταν εξαντληθούν τα στοιχεία του ένος από τους δύο πίνακες, βάζουµε όσα στοιχεία απέµειναν
από τον άλλο πίνακα στο τέλος της ταξινοµηµένης ακολουθίας.
Στο παράδειγµα βλέπουµε µερικά βήµατα και τους µετρητές που χρησιµοποιούνται.
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
4. Η διαδικασία merge
33∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
34∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Μία υλοποίηση της merge είναι η ακόλουθη:
void merge(int *pinakas, int start, int finish)
{
int C[SIZE];
int i,j,k;
int middle, n, m;
middle=(start+finish)/2;
/* 1os pinakas PIN[start..middle]=PIN[i..n] */
i=start;
n=middle;
/* 2os pinakas PIN[middle+1..finish]=PIN[j...m] */
j=middle+1;
m=finish;
/* C: sigxwneumenos pinakas */
k=0;
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
4. Η διαδικασία merge
(συνεχίζεται…)
35∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Μία υλοποίηση της merge είναι η ακόλουθη:
(συνέχεια…)
/* 1. Sigxwneusi twn dio pinakwn */
while (i<=n && j<=m)
{
if (pinakas[i]<pinakas[j])
{
C[k]=pinakas[i];
k++;
i++;
}
else
{
C[k]=pinakas[j];
k++;
j++;
}
}
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
4. Η διαδικασία merge
(συνεχίζεται…)
36∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Μία υλοποίηση της merge είναι η ακόλουθη:
(συνέχεια…)
/* 2. Antigrafi tou pinaka pou perissevei sto telos tou sigxwneumenou pinaka */
if (i==n+1) /* Eksantlithike o 1os pinakas */
{
while (j<=m)
{
C[k]=pinakas[j];
k++;
j++;
}
}
else /* Eksantlithike o 2os pinakas */
{
while (i<=n)
{
C[k]=pinakas[i];
k++;
i++;
}
}
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
4. Η διαδικασία merge
(συνεχίζεται…)
37∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Μία υλοποίηση της merge είναι η ακόλουθη:
(συνέχεια…)
/* 3. Antigrafi tou C ston pinakas */
k=0;
i=start;
while (i<=finish)
{
pinakas[i]=C[k];
i++;
k++;
}
}
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
4. Η διαδικασία merge
(συνεχίζεται…)
38∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Άσκηση: Μελετήστε το πρόγραµµα mergesort.c και “καθαρίστε” το από τις εκτυπώσεις ώστε η
mergesort να είναι µια αυτόνοµη συνάρτηση.
A. Θεωρία
5. Ταξινόµηση µε Συγχώνευση (Merge Sort)
5. Άσκηση
A. Θεωρία
6. Γρήγορη Ταξινόµηση (Quick Sort)
1. Ιδέα του Αλγορίθµου
39∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Ι∆ΕΑ της QuickSort:
1. Επιλέγει ένα Στοιχείο του Πίνακα (Οδηγό Στοιχείο – Εδώ το στοιχείο που είναι στην πρώτη
θέση)
2. Χωρίζει τον πίνακα σε τρία µέρη:
• Τα στοιχεία που είναι µικρότερα του οδηγού στοιχείου
• Το οδηγό στοιχείο
• Τα στοιχεία που είναι µεγαλύτερα ή ίσα του οδηγού στοιχείου
0 1 2 3 4 5 6 7 8 9
18 7 4 11 9 20 6 1 22 19
6 7 4 11 9 1 18 20 22 19
7 8 9
20 22 19
3. Επαναλαµβάνει αναδροµικά στους δύο υποπίνακες που προέκυψαν.
6
18
0 1 2 3 4 5
6 7 4 11 9 1
A. Θεωρία
6. Γρήγορη Ταξινόµηση (Quick Sort)
2. Κώδικας σε C
40∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Η υλοποίηση σε γλώσσα C είναι η ακόλουθη:
Όπου partition είναι µια συνάρτηση που πραγµατοποιεί τον χωρισµό του πίνακα σε µικρότερα
και µεγαλύτερα (ή ίσα) στοιχεία σε σχέση µε το οδηγό στοιχείο.
Επιστρέφει τη θέση του τελευταίου µικρότερου στοιχείου από το οδηγό στοιχείο.
Συνεπώς οι δύο πίνακες στους οποίους γίνεται η αναδροµή είναι:
start..pos
pos+1..finish
Στην επόµενη διαφάνεια βλέπουµε ένα παράδειγµα εκτέλεσης.
void quicksort(int *pinakas, int start, int finish)
{
int pos;
if (start<finish)
{
pos=partition(pinakas,start,finish);
quicksort(pinakas,start,pos-1);
quicksort(pinakas,pos+1,finish);
}
}
Γρήγορη Ταξινόµηση QuickSort (3.Παράδειγµα Εκτέλεσης)
41∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
18 7 4 11 9 20 6 1 22 19 14 5 8 3 10 13
8 7 4 11 9 13 6 1 10 3 14 5 18 19 22 20
0 1 2 3 4 5 6 7 8 9 10 11
8 7 4 11 9 13 6 1 10 3 14 5
6 7 4 5 3 1 8 13 10 9 14 11
13 14 15
19 22 20
19 22 20
14 15
22 20
20 22
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 3 4 5 6 7 8 9 10 11 13 14 18 19 20 22
0 1 2 3 4 5
6 7 4 5 3 1
3 1 4 5 6 7
7 8 9 10 11
13 10 9 14 11
11 10 9 13 14
5
7
7
0 1 2 3
3 1 4 5
1 3 4 5
0
1
1
2 3
4 5
4 5
3
5
5
7 8 9
11 10 9
9 10 11
11
14
14
7 8
9 10
9 10
8
10
10
14
20
20
42∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Η διαµέριση των στοιχείων στα µικρότερα και µεγαλύτερα ή ίσα µπορεί να γίνει µε πολλούς
τρόπους:
Π.χ. ένας απλός τρόπος είναι να χρησιµοποιήσουµε έναν βοηθητικό πίνακα που να
βάζουµε στα αριστερά τα µικρότερα στοιχεία και στα δεξιά τα µεγαλύτερα στοιχεία του
οδηγού.
Ωστόσο εµείς θα µελετήσουµε έναν τρόπο διαµέρισης, που είναι µια µικρή παραλλαγή του
σχήµατος Hoare:
Σαρώνουµε τον πίνακα από αριστερά ψάχνοντας για ένα στοιχείο που είναι µεγαλύτερο
του οδηγού
Σαρώνουµε τον πίνακα από δεξιά ψάχνοντας για ένα στοιχείο που είναι µικρότερο (ή ίσο)
του οδηγού
Ανταλλάσσουµε τα δύο στοιχεία και επαναλαµβάνουµε µέχρι να γίνει ο χωρισµός των
στοιχείων.
Μελετούµε το παράδειγµα της επόµενης διαφάνειας
A. Θεωρία
6. Γρήγορη Ταξινόµηση (Quick Sort)
4. Η διαδικασία partition
Παράδειγµα εκτέλεσης της partition:
Τερµατισµός:
Ανταλλαγή του οδηγού στοιχείου µε το «δεξιό» δείκτη
A. Θεωρία
6. Γρήγορη Ταξινόµηση (Quick Sort)
4. Η διαδικασία partition
43∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
0 1 2 3 4 5 6 7 8 9
9 8 4 11 2 20 6 1 22 19
i=3 j=8
0 1 2 3 4 5 6 7 8 9
9 8 4 11 2 20 6 1 22 19
8 4 1 11 22 19
0 1 2 3 4 5 6 7 8 9
9 8 4 1 2 20 6 11 22 19
9 8 4 1 11 22 19i=5 j=6
0 1 2 3 4 5 6 7 8 9
9 8 4 1 2 6 20 11 22 19
0 1 2 3 4 5 6 7 8 9
9 8 4 1 2 20 6 11 22 19
9 8 4 1 2 6 20 11 22 19
i=7j=6
0 1 2 3 4 5 6 7 8 9
9 8 4 1 2 6 20 11 22 19
0 1 2 3 4 5 6 7 8 9
6 8 4 1 2 9 20 11 22 19
A. Θεωρία
6. Γρήγορη Ταξινόµηση (Quick Sort)
4. Η διαδικασία partition
44∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Η υλοποίηση της partition µε το σχήµα του Hoare σε ψευδογλώσσα είναι η ακόλουθη:
int partition(int *pinakas, int start, int finish)
{
int pivot, i, j;
pivot=pinakas[start];
i=start+1;
j=finish;
while(1)
{
while(pinakas[i]<=pivot && i<=finish)
i++;
while(pinakas[j]>pivot && j>=start)
j--;
if (i<j)
swap(&pinakas[i],&pinakas[j]);
else
{
swap(&pinakas[start],&pinakas[j]);
return j;
}
}
}
A. Θεωρία
6. Γρήγορη Ταξινόµηση (Quick Sort)
5. Άσκηση
45∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
Άσκηση: Μελετήστε το πρόγραµµα quicksort.c και “καθαρίστε” το από τις εκτυπώσεις ώστε η
quicksort να είναι µια αυτόνοµη συνάρτηση.
Β. Ασκήσεις
Εφαρµογή 1: Ταξινόµηση Πραγµατικών Αριθµών
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 46
Μετατρέψτε την bubble sort και την quick sort έτσι ώστε να πραγµατοποιούν ταξινόµηση σε
τύπο δεδοµένων double.
Β. Ασκήσεις
Εφαρµογή 2: Ταξινόµηση σε Φθίνουσα Σειρά
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 47
Μετατρέψτε την insertion sort και την merge sort έτσι ώστε να πραγµατοποιούν ταξινόµηση σε
φθίνουσα σειρά.
Β. Ασκήσεις
Εφαρµογή 3: Quick Sort που χρησιµοποιεί Insertion Sort
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 48
Προτείνεται η εξής υβριδική µέθοδος ταξινόµησης:
Εκτελούµε τον αλγόριθµο Quick Sort
Αν ωστόσο ο πίνακας έχει το πολύ 5 στοιχεία, τότε αυτός ταξινοµείται µε χρήση της
insertion sort
Κατασκευάστε την νέα µέθοδο ταξινόµησης µε όνοµα hybrid sort και αναδείξτε τη χρήση της µε
µία κατάλληλη συνάρτηση main.
Β. Ασκήσεις
Εφαρµογή 4.1: Εκτέλεση όλων των αλγορίθµων
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 49
∆ηµιουργήστε ένα πρόγραµµα το οποίο:
∆ηµιουργείται ένας πίνακας 100 ακεραίων αριθµών. Οι τιµές του πίνακα να είναι ακέραιοι
στο εύρος [0U1000]
Καλούνται διαδοχικά οι 5 αλγόριθµοι ταξινόµησης που µελετήσαµε και προβάλλεται το
αποτέλεσµα της ταξινόµησης του πίνακα.
Β. Ασκήσεις
Εφαρµογή 4.2: Πλήθος Συγκρίσεων των Αλγορίθµων Αναζήτησης
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 50
Τροποποιήστε τους 3 µη αναδροµικούς αλγορίθµους, ώστε να µετράνε το πλήθος των
συγκρίσεων που πραγµατοποιούνται.
Μετά την εκτέλεση του αντίστοιχου αλγορίθµου να τυπώνεται το πλήθος των συγκρίσεων που
πραγµατοποιήθηκαν.
Σηµείωση: Όταν λέµε συγκρίσεις εννοούµε τις συγκρίσεις που γίνονται µεταξύ στοιχείων
του πίνακα.
Β. Ασκήσεις
Εφαρµογή 4.3: Πλήθος Συγκρίσεων των Αλγορίθµων Αναζήτησης
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 51
Τροποποιήστε τους 2 αναδροµικούς αλγορίθµους, ώστε να µετράνε το πλήθος των συγκρίσεων
που πραγµατοποιούνται.
Μετά την εκτέλεση του αντίστοιχου αλγορίθµου να τυπώνεται το πλήθος των συγκρίσεων που
πραγµατοποιήθηκαν.
Σηµείωση: Όταν λέµε συγκρίσεις εννοούµε τις συγκρίσεις που γίνονται µεταξύ στοιχείων
του πίνακα.
Β. Ασκήσεις
Εφαρµογή 4.4: Πειραµατική Μελέτη των Αλγορίθµων Αναζήτησης
∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 52
Πειραµατιστείτε δοκιµάζοντας διαφορετικές διαστάσεις στον πίνακα.
Ποιος αλγόριθµος δείχνει να επικρατεί των άλλων;

More Related Content

What's hot

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

What's hot (20)

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.5
ΠΛΗ10 ΜΑΘΗΜΑ 1.5ΠΛΗ10 ΜΑΘΗΜΑ 1.5
ΠΛΗ10 ΜΑΘΗΜΑ 1.5
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 8 - ΔΕΙΚΤΕΣ
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 4 - ΤΕΛΕΣΤΕΣ και η ΔΟΜΗ ΕΛΕΓΧΟΥ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1 ΠΛΗ10 ΜΑΘΗΜΑ 2.1
ΠΛΗ10 ΜΑΘΗΜΑ 2.1
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΤΕΣΤ 2
ΠΛΗ10 ΤΕΣΤ 2ΠΛΗ10 ΤΕΣΤ 2
ΠΛΗ10 ΤΕΣΤ 2
 

Viewers also liked

ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

Viewers also liked (6)

ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (ΕΚΤΥΠΩΣΗ)
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ (ΕΚΤΥΠΩΣΗ)
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ (ΕΚΤΥΠΩΣΗ)
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ (ΕΚΤΥΠΩΣΗ)
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 

Similar to ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3

Numerical_Methods_and_Computational_Tools
Numerical_Methods_and_Computational_ToolsNumerical_Methods_and_Computational_Tools
Numerical_Methods_and_Computational_Tools
Sophia Tsiopou
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
Dimitris Psounis
 
ανάπτυξη 2006 απ
ανάπτυξη 2006 απανάπτυξη 2006 απ
ανάπτυξη 2006 απ
educast
 
Eykleidhs 2012 13 solutionsfinal
Eykleidhs 2012 13 solutionsfinalEykleidhs 2012 13 solutionsfinal
Eykleidhs 2012 13 solutionsfinal
Christos Loizos
 
γ τάξη αλγόριθμος
γ τάξη αλγόριθμοςγ τάξη αλγόριθμος
γ τάξη αλγόριθμος
vfilip
 

Similar to ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3 (20)

ΠΛΗ30 ΜΑΘΗΜΑ 2.1
ΠΛΗ30 ΜΑΘΗΜΑ 2.1ΠΛΗ30 ΜΑΘΗΜΑ 2.1
ΠΛΗ30 ΜΑΘΗΜΑ 2.1
 
Numerical_Methods_and_Computational_Tools
Numerical_Methods_and_Computational_ToolsNumerical_Methods_and_Computational_Tools
Numerical_Methods_and_Computational_Tools
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2ΠΛΗ10 ΜΑΘΗΜΑ 1.2
ΠΛΗ10 ΜΑΘΗΜΑ 1.2
 
Lyseis statistic
Lyseis statisticLyseis statistic
Lyseis statistic
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.4
ΠΛΗ30 ΜΑΘΗΜΑ 1.4ΠΛΗ30 ΜΑΘΗΜΑ 1.4
ΠΛΗ30 ΜΑΘΗΜΑ 1.4
 
Κεφάλαιο 1ο - Φύλλα εργασίας 1 μέχρι 13
Κεφάλαιο 1ο - Φύλλα εργασίας 1 μέχρι 13Κεφάλαιο 1ο - Φύλλα εργασίας 1 μέχρι 13
Κεφάλαιο 1ο - Φύλλα εργασίας 1 μέχρι 13
 
Agumnasiou2008
Agumnasiou2008Agumnasiou2008
Agumnasiou2008
 
4ο θέμα άλγεβρας β΄ λυκείου
4ο θέμα άλγεβρας β΄ λυκείου4ο θέμα άλγεβρας β΄ λυκείου
4ο θέμα άλγεβρας β΄ λυκείου
 
εξισωσεις ανισωσεις-απολυτα-ριζικα
εξισωσεις ανισωσεις-απολυτα-ριζικαεξισωσεις ανισωσεις-απολυτα-ριζικα
εξισωσεις ανισωσεις-απολυτα-ριζικα
 
ΠΟΥΚΑΜΙΣΑΣ ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΕΠΠ 2016 ΚΑΙ ΛΥΣΕΙΣ
ΠΟΥΚΑΜΙΣΑΣ ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΕΠΠ 2016 ΚΑΙ ΛΥΣΕΙΣΠΟΥΚΑΜΙΣΑΣ ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΕΠΠ 2016 ΚΑΙ ΛΥΣΕΙΣ
ΠΟΥΚΑΜΙΣΑΣ ΘΕΜΑΤΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΕΠΠ 2016 ΚΑΙ ΛΥΣΕΙΣ
 
Math gen themata_lyseis_2017
Math gen themata_lyseis_2017Math gen themata_lyseis_2017
Math gen themata_lyseis_2017
 
Άλγεβρα 2α 3α Β ΕΠΑΛ 25_5_2022.docx
Άλγεβρα 2α 3α Β ΕΠΑΛ 25_5_2022.docxΆλγεβρα 2α 3α Β ΕΠΑΛ 25_5_2022.docx
Άλγεβρα 2α 3α Β ΕΠΑΛ 25_5_2022.docx
 
Πυθαγόρειο Θεώρημα
Πυθαγόρειο ΘεώρημαΠυθαγόρειο Θεώρημα
Πυθαγόρειο Θεώρημα
 
ανάπτυξη 2006 απ
ανάπτυξη 2006 απανάπτυξη 2006 απ
ανάπτυξη 2006 απ
 
ΠΛΗ10 ΤΕΣΤ 27
ΠΛΗ10 ΤΕΣΤ 27ΠΛΗ10 ΤΕΣΤ 27
ΠΛΗ10 ΤΕΣΤ 27
 
Eykleidhs 2012 13 solutionsfinal
Eykleidhs 2012 13 solutionsfinalEykleidhs 2012 13 solutionsfinal
Eykleidhs 2012 13 solutionsfinal
 
ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1ΠΛΗ30 Τυπολόγιο Ενότητας 1
ΠΛΗ30 Τυπολόγιο Ενότητας 1
 
ΠΛΗ30 ΜΑΘΗΜΑ 1.1
ΠΛΗ30 ΜΑΘΗΜΑ 1.1ΠΛΗ30 ΜΑΘΗΜΑ 1.1
ΠΛΗ30 ΜΑΘΗΜΑ 1.1
 
γ τάξη αλγόριθμος
γ τάξη αλγόριθμοςγ τάξη αλγόριθμος
γ τάξη αλγόριθμος
 
2 εκπ μκδ
2 εκπ μκδ2 εκπ μκδ
2 εκπ μκδ
 

More from Dimitris Psounis

ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

More from Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 

Recently uploaded

εργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptxεργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptx
Effie Lampropoulou
 

Recently uploaded (14)

Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
 
εργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptxεργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptx
 
Σχέσεις στην εφηβεία_έρωτας
Σχέσεις                     στην εφηβεία_έρωταςΣχέσεις                     στην εφηβεία_έρωτας
Σχέσεις στην εφηβεία_έρωτας
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
 
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηΣουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
 
Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...
Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...
Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...
 
Σεβασμός .
Σεβασμός                                   .Σεβασμός                                   .
Σεβασμός .
 
ΘΕΣΣΑΛΟΝΙΚΗ Η ΔΕΥΤΕΡΗ ΠΟΛΗ ΤΗΣ ΒΥΖΑΝΤΙΝΗΣ ΑΥΤΟΚΡΑΤΟΡΙΑΣ, ΔΑΝΑΗ ΠΑΝΟΥ
ΘΕΣΣΑΛΟΝΙΚΗ Η ΔΕΥΤΕΡΗ ΠΟΛΗ ΤΗΣ ΒΥΖΑΝΤΙΝΗΣ ΑΥΤΟΚΡΑΤΟΡΙΑΣ, ΔΑΝΑΗ ΠΑΝΟΥΘΕΣΣΑΛΟΝΙΚΗ Η ΔΕΥΤΕΡΗ ΠΟΛΗ ΤΗΣ ΒΥΖΑΝΤΙΝΗΣ ΑΥΤΟΚΡΑΤΟΡΙΑΣ, ΔΑΝΑΗ ΠΑΝΟΥ
ΘΕΣΣΑΛΟΝΙΚΗ Η ΔΕΥΤΕΡΗ ΠΟΛΗ ΤΗΣ ΒΥΖΑΝΤΙΝΗΣ ΑΥΤΟΚΡΑΤΟΡΙΑΣ, ΔΑΝΑΗ ΠΑΝΟΥ
 
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΗ ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
 
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣΗ ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
 
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος ΔόσηςΟ εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
 
Μαθητικά συμβούλια .
Μαθητικά συμβούλια                                  .Μαθητικά συμβούλια                                  .
Μαθητικά συμβούλια .
 
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗΗ ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
 

ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3

  • 1. Αλγόριθµοι σε C Μάθηµα 3: Ταξινόµηση Πίνακα ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Ταξινόµηση Πίνακα 1. Ορισµός του Προβλήµατος 2. Ταξινόµηση µε Εισαγωγή 1. Ιδέα του Αλγορίθµου 2. Κώδικας σε C 3. Παράδειγµα Εκτέλεσης 4. Άσκηση 3. Ταξινόµηση µε Επιλογή 1. Ιδέα του Αλγορίθµου 2. Κώδικας σε C 3. Παράδειγµα Εκτέλεσης 4. Άσκηση 4. Ταξινόµηση Φυσαλίδας 1. Ιδέα του Αλγορίθµου 2. Κώδικας σε C 3. Παράδειγµα Εκτέλεσης 4. Άσκηση 2∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 5. Ταξινόµηση µε Συγχώνευση 1. Ιδέα του Αλγορίθµου 2. Κώδικας σε C 3. Παράδειγµα Εκτέλεσης 4. Η merge 5. Άσκηση 6. Γρήγορη Ταξινόµηση 1. Ιδέα του Αλγορίθµου 2. Κώδικας σε C 3. Παράδειγµα Εκτέλεσης 4. Άσκηση Β. Ασκήσεις
  • 3. A. Θεωρία 1. Αναζήτηση Στοιχείου σε Πίνακα 1. Ορισµός του Προβλήµατος 3∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Η «Ταξινόµηση Πίνακα» είναι το υπολογιστικό πρόβληµα στο οποίο: • Είσοδος: Ένας Πίνακας Στοιχείων • Έξοδος: Ο ίδιος Πίνακας µε τα στοιχεία του Ταξινοµηµένα Τα στοιχεία ταξινοµούνται: Σε αύξουσα σειρά (από το µικρότερο στο µεγαλύτερο) [Σηµείωση: Θα µελετήσουµε την ταξινόµηση σε αύξουσα σειρά στη θεωρία] Σε φθίνουσα σειρά (από το µεγαλύτερο στο µικρότερο) Θα µελετήσουµε 5 αλγόριθµους: Την Ταξινόµηση µε Επιλογή (Selection Sort) Την Ταξινόµηση µε Εισαγωγή (Insertion Sort) Την Ταξινόµηση Φυσαλίδας (Bubble Sort) Την Ταξινόµηση µε Συγχώνευση (Merge Sort) Την Γρήγορη Ταξινόµηση (Quick Sort)
  • 4. A. Θεωρία 2. Ταξινόµηση µε Επιλογή (Selection Sort) 1. Αλγοριθµική Ιδέα ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 4 Ι∆ΕΑ της Selection Sort: • Έχοντας ταξινοµήσει τα στοιχεία 0..i-1 • επέλεξε το ελάχιστο ανάµεσα στα i έως N-1 και τοποθέτησε το στην θέση i 1 3 … 8 14 15 32 9 … 19 Ταξινοµηµένος Αταξινόµητος 1 swap 2 Υλοποίηση: • Στο βήµα i (0UN-1) • Βρίσκω το ελάχιστο στις θέσεις i..N-1 • Το κάνω swap µε το στοιχείο στη θέση i
  • 5. Ακολουθεί ο κώδικας σε C: Ο pinakas είναι ένας πίνακας Ν ακεραίων: A. Θεωρία 2. Ταξινόµηση µε Επιλογή (Selection Sort) 2. Κώδικας σε C 5∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα /* Taksinomisi Selection Sort */ for (i=0; i<N; i++) { pos=i; for (j=i+1; j<N; j++) { if (pinakas[j]<pinakas[pos]) pos=j; } swap(&pinakas[i], &pinakas[pos]); }
  • 6. A. Θεωρία 2. Ταξινόµηση µε Εισαγωγή (Insertion Sort) 3. Ένα Παράδειγµα Εκτέλεσης ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 6 9 2 4 7 1 8 6 3i=0: 1 2 4 7 9 8 6 3i=1: 1 2 4 7 9 8 6 3i=2: 1 2 3 7 9 8 6 4i=3: 1 2 3 4 9 8 6 7i=4: 1 2 3 4 6 8 9 7i=5: 1 2 3 4 6 7 9 8i=6: 1 2 3 4 6 7 8 9i=7: Αρχικός Πίνακας: 9 2 4 7 1 8 6 3 Τελικός Πίνακας: 1 2 3 4 6 7 8 9
  • 7. A. Θεωρία 2. Ταξινόµηση µε Επιλογή (Selection Sort) 4. Άσκηση 7∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αφού µελετήσετε το πρόγραµµα selection_sort.c κατασκευάσετε συνάρτηση που παίρνει ως όρισµα έναν πίνακα ακεραίων (και τη διάστασή του) και τον ταξινοµεί µε χρήση της selection sort.
  • 8. A. Θεωρία 3. Ταξινόµηση µε Εισαγωγή (Insertion Sort) 1. Αλγοριθµική Ιδέα ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 8 Ι∆ΕΑ της Insertion Sort: • Έχοντας ταξινοµήσει τα στοιχεία 0..i-1 • Τοποθετεί το στοιχείο i ταξινοµηµένα στις θέσεις 0..i (µε ανταλλαγές µέχρι να βρει µικρότερο) 1 3 … 7 14 15 9 32 … 4 Ταξινοµηµένος Αταξινόµητος swap Υλοποίηση: • Στο βήµα i (1UN-1) • Κάνω συνεχή swap του στοιχείου i αριστερά, µέχρι να βρω κάποιο µικρότερο στοιχείο swap
  • 9. Ακολουθεί ο κώδικας σε C: Ο pinakas είναι ένας πίνακας Ν ακεραίων: A. Θεωρία 3. Ταξινόµηση µε Εισαγωγή (Insertion Sort) 2. Κώδικας σε C 9∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα /* Taksinomisi me Eisagogi */ for (i=1; i<N; i++) { for (j=i; j>=1; j--) { if (pinakas[j]<pinakas[j-1]) swap(&pinakas[j], &pinakas[j-1]); else break; } }
  • 10. A. Θεωρία 3. Ταξινόµηση µε Εισαγωγή (Insertion Sort) 3. Ένα Παράδειγµα Εκτέλεσης ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 10 9 2 4 7 1 8 6 3i=1: 2 9 4 7 1 8 6 3i=2: 2 4 9 7 1 8 6 3i=3: 2 4 7 9 1 8 6 3i=4: 1 2 4 7 9 8 6 3i=5: 1 2 4 7 8 9 6 3i=6: 1 2 4 6 7 8 9 3i=7: Αρχικός Πίνακας: 9 2 4 7 1 8 6 3 Τελικός Πίνακας: 1 2 3 4 6 7 8 9
  • 11. A. Θεωρία 3. Ταξινόµηση µε Εισαγωγή (Insertion Sort) 4. Άσκηση 11∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αφού µελετήσετε το πρόγραµµα insertion_sort.c κατασκευάσετε συνάρτηση που παίρνει ως όρισµα έναν πίνακα ακεραίων (και τη διάστασή του) και τον ταξινοµεί µε χρήση της insertion sort.
  • 12. A. Θεωρία 4. Ταξινόµηση Φυσαλίδας (Bubble Sort) 1. Αλγοριθµική Ιδέα ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 12 Ι∆ΕΑ της Bubble Sort: • Έχοντας ταξινοµήσει τα στοιχεία 0..i-1 • Τα ελαφρύτερα (µικρότερα) στοιχεία αναδύονται µε µία σάρωση στις θέσεις Ν-1Ui 1 … 5 12 14 15 7 11 … 8 Ταξινοµηµένος Αταξινόµητος Υλοποίηση: • Στο βήµα i (0UN-1) • Για j=N-1 έως i+1: Κάνω swap του PIN[j] µε το PIN[j-1] εάν PIN[j]<PIN[j-1]
  • 13. Ακολουθεί ο κώδικας σε C: Ο pinakas είναι ένας πίνακας Ν ακεραίων: A. Θεωρία 4. Ταξινόµηση Φυσαλίδας(Bubble Sort) 2. Κώδικας σε C 13∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα /* Taksinomisi Fysalidas */ for (i=0; i<N; i++) { for (j=N-1; j>=i+1; j--) { if (pinakas[j]<pinakas[j-1]) swap(&pinakas[j], &pinakas[j-1]); } }
  • 14. A. Θεωρία 4. Ταξινόµηση Φυσαλίδας(Bubble Sort) 3. Ένα Παράδειγµα Εκτέλεσης ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 14 9 2 4 7 1 8 6 3i=0: 1 9 2 4 7 3 8 6i=1: 1 2 9 3 4 7 6 8i=2: 1 2 3 9 4 6 7 8i=3: 1 2 3 4 9 6 7 8i=4: 1 2 3 4 6 9 7 8i=5: 1 2 3 4 6 7 9 8i=6: 1 2 3 4 6 7 8 9i=7: Αρχικός Πίνακας: 9 2 4 7 1 8 6 3 Τελικός Πίνακας: 1 2 3 4 6 7 8 9
  • 15. A. Θεωρία 4. Ταξινόµηση Φυσαλίδας(Bubble Sort) 4. Άσκηση 15∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αφού µελετήσετε το πρόγραµµα bubble_sort.c κατασκευάσετε συνάρτηση που παίρνει ως όρισµα έναν πίνακα ακεραίων (και τη διάστασή του) και τον ταξινοµεί µε χρήση της bubble sort.
  • 16. A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 1. Αλγοριθµική Ιδέα ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 16 Ι∆ΕΑ της Merge Sort: 1. (Αναδροµικά) Ταξινόµησε το αριστερό µισό του πίνακα 2. (Αναδροµικά) Ταξινόµησε το δεξί µισό του πίνακα 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 1 4 6 7 9 11 18 20 8 9 10 11 12 13 14 15 2 3 5 10 13 14 19 22 3. Συγχώνευσε τα δύο κοµµάτια σε µία ταξινοµηµένη ακολουθία 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 9 0 1 2 3 4 5 6 7 1 4 6 7 9 11 18 20 8 9 10 11 12 13 14 15 2 3 5 10 13 14 19 22
  • 17. Το σώµα του αλγορίθµου φαίνεται στον ακόλουθο κώδικα (o πίνακας έχει δηλωθεί ως int pinakas[N] και οι µεταβλητές start,finish, middle είναι ακέραιες µεταβλητές): A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 1. Αλγοριθµική Ιδέα 17∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα void mergesort(int *pinakas, int start, int finish) { int i,middle; if (start==finish) /* 1 stoixeio */ return; else if (start==finish-1) /* 2 stoixeia */ { if (pinakas[start]>pinakas[finish]) swap(&pinakas[start], &pinakas[finish]); } else { middle=(start+finish)/2; mergesort(pinakas,start,middle); mergesort(pinakas,middle+1,finish); merge(pinakas,start,finish); } }
  • 18. 18∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Πίνακας προς ταξινόµηση: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 9 10 13 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 19. 19∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση MergeSort(Α,0,15) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 20. 20∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,0,7) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 18 7 4 11 4 5 6 7 9 20 6 1 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 21. 21∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,0,3) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 18 7 4 11 4 5 6 7 9 20 6 1 0 1 18 7 3 4 4 11 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 22. 22∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,0,1): Ταξινοµηση του υποπίνακα 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 18 7 4 11 4 5 6 7 9 20 6 1 0 1 7 18 2 3 4 11 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 23. 23∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,2,3): Ταξινοµηση του υποπίνακα 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 18 7 4 11 4 5 6 7 9 20 6 1 0 1 7 18 2 3 4 11 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 24. 24∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,0,3): Συγχώνευση των δύο υποπινάκων 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 4 7 11 18 4 5 6 7 9 20 6 1 0 1 7 18 2 3 4 11 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 25. 25∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,4,7) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 4 7 11 18 4 5 6 7 9 20 6 1 0 1 7 18 2 3 4 11 4 5 9 20 6 7 6 1 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 26. 26∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,4,5): Ταξινοµηση του υποπίνακα 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 4 7 11 18 4 5 6 7 9 20 6 1 0 1 7 18 2 3 4 11 4 5 9 20 6 7 6 1 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 27. 27∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,6,7): Ταξινοµηση του υποπίνακα 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 4 7 11 18 4 5 6 7 9 20 6 1 0 1 7 18 2 3 4 11 4 5 9 20 6 7 1 6 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 28. 28∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,4,7): Συγχώνευση των δύο υποπινάκων 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 18 7 4 11 9 20 6 1 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 4 7 11 18 4 5 6 7 1 6 9 20 0 1 7 18 2 3 4 11 4 5 9 20 6 7 1 6 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 29. 29∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,0,7): Συγχώνευση των δύο υποπινάκων 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 1 4 6 7 9 11 18 20 8 9 10 11 12 13 14 15 22 19 14 5 2 3 10 13 0 1 2 3 4 7 11 18 4 5 6 7 1 6 9 20 0 1 7 18 2 3 4 11 4 5 9 20 6 7 1 6 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 30. 30∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αντίστοιχα θα γίνουν όλες οι αναδροµικές κλήσεις στο (8,15) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 2 3 10 13 0 1 2 3 4 5 6 7 1 4 6 7 9 11 18 20 8 9 10 11 12 13 14 15 2 3 5 10 13 14 19 22 0 1 2 3 4 7 11 18 4 5 6 7 1 6 9 20 0 1 7 18 2 3 4 11 4 5 9 20 6 7 1 6 8 9 10 11 5 14 19 22 12 13 14 15 2 3 10 13 8 9 19 22 10 11 5 14 12 13 2 3 14 15 10 13 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 31. 31∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Αναδροµική Κλήση (A,0,15): Συγχώνευση των δύο υποπινάκων 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 9 10 11 13 14 18 19 20 22 0 1 2 3 4 5 6 7 1 4 6 7 9 11 18 20 8 9 10 11 12 13 14 15 2 3 5 10 13 14 19 22 0 1 2 3 4 7 11 18 4 5 6 7 1 6 9 20 0 1 7 18 2 3 4 11 4 5 9 20 6 7 1 6 8 9 10 11 5 14 19 22 12 13 14 15 2 3 10 13 8 9 19 22 10 11 5 14 12 13 2 3 14 15 10 13 A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 3. Ένα Παράδειγµα Εκτέλεσης
  • 32. 32∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Η διαδικασία merge δουλεύει ως εξής: Σαρώνει τους δύο πίνακες ταυτόχρονα από αριστερά προς τα δεξιά. Συγκρίνει τα δύο τρέχοντα στοιχεία των πινάκων Επιλέγει το µικρότερο και το βάζει στην επόµενη θέση της ταξινοµηµένης ακολουθίας Όταν εξαντληθούν τα στοιχεία του ένος από τους δύο πίνακες, βάζουµε όσα στοιχεία απέµειναν από τον άλλο πίνακα στο τέλος της ταξινοµηµένης ακολουθίας. Στο παράδειγµα βλέπουµε µερικά βήµατα και τους µετρητές που χρησιµοποιούνται. A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 4. Η διαδικασία merge
  • 33. 33∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα
  • 34. 34∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Μία υλοποίηση της merge είναι η ακόλουθη: void merge(int *pinakas, int start, int finish) { int C[SIZE]; int i,j,k; int middle, n, m; middle=(start+finish)/2; /* 1os pinakas PIN[start..middle]=PIN[i..n] */ i=start; n=middle; /* 2os pinakas PIN[middle+1..finish]=PIN[j...m] */ j=middle+1; m=finish; /* C: sigxwneumenos pinakas */ k=0; A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 4. Η διαδικασία merge (συνεχίζεται…)
  • 35. 35∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Μία υλοποίηση της merge είναι η ακόλουθη: (συνέχεια…) /* 1. Sigxwneusi twn dio pinakwn */ while (i<=n && j<=m) { if (pinakas[i]<pinakas[j]) { C[k]=pinakas[i]; k++; i++; } else { C[k]=pinakas[j]; k++; j++; } } A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 4. Η διαδικασία merge (συνεχίζεται…)
  • 36. 36∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Μία υλοποίηση της merge είναι η ακόλουθη: (συνέχεια…) /* 2. Antigrafi tou pinaka pou perissevei sto telos tou sigxwneumenou pinaka */ if (i==n+1) /* Eksantlithike o 1os pinakas */ { while (j<=m) { C[k]=pinakas[j]; k++; j++; } } else /* Eksantlithike o 2os pinakas */ { while (i<=n) { C[k]=pinakas[i]; k++; i++; } } A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 4. Η διαδικασία merge (συνεχίζεται…)
  • 37. 37∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Μία υλοποίηση της merge είναι η ακόλουθη: (συνέχεια…) /* 3. Antigrafi tou C ston pinakas */ k=0; i=start; while (i<=finish) { pinakas[i]=C[k]; i++; k++; } } A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 4. Η διαδικασία merge (συνεχίζεται…)
  • 38. 38∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Άσκηση: Μελετήστε το πρόγραµµα mergesort.c και “καθαρίστε” το από τις εκτυπώσεις ώστε η mergesort να είναι µια αυτόνοµη συνάρτηση. A. Θεωρία 5. Ταξινόµηση µε Συγχώνευση (Merge Sort) 5. Άσκηση
  • 39. A. Θεωρία 6. Γρήγορη Ταξινόµηση (Quick Sort) 1. Ιδέα του Αλγορίθµου 39∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Ι∆ΕΑ της QuickSort: 1. Επιλέγει ένα Στοιχείο του Πίνακα (Οδηγό Στοιχείο – Εδώ το στοιχείο που είναι στην πρώτη θέση) 2. Χωρίζει τον πίνακα σε τρία µέρη: • Τα στοιχεία που είναι µικρότερα του οδηγού στοιχείου • Το οδηγό στοιχείο • Τα στοιχεία που είναι µεγαλύτερα ή ίσα του οδηγού στοιχείου 0 1 2 3 4 5 6 7 8 9 18 7 4 11 9 20 6 1 22 19 6 7 4 11 9 1 18 20 22 19 7 8 9 20 22 19 3. Επαναλαµβάνει αναδροµικά στους δύο υποπίνακες που προέκυψαν. 6 18 0 1 2 3 4 5 6 7 4 11 9 1
  • 40. A. Θεωρία 6. Γρήγορη Ταξινόµηση (Quick Sort) 2. Κώδικας σε C 40∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Η υλοποίηση σε γλώσσα C είναι η ακόλουθη: Όπου partition είναι µια συνάρτηση που πραγµατοποιεί τον χωρισµό του πίνακα σε µικρότερα και µεγαλύτερα (ή ίσα) στοιχεία σε σχέση µε το οδηγό στοιχείο. Επιστρέφει τη θέση του τελευταίου µικρότερου στοιχείου από το οδηγό στοιχείο. Συνεπώς οι δύο πίνακες στους οποίους γίνεται η αναδροµή είναι: start..pos pos+1..finish Στην επόµενη διαφάνεια βλέπουµε ένα παράδειγµα εκτέλεσης. void quicksort(int *pinakas, int start, int finish) { int pos; if (start<finish) { pos=partition(pinakas,start,finish); quicksort(pinakas,start,pos-1); quicksort(pinakas,pos+1,finish); } }
  • 41. Γρήγορη Ταξινόµηση QuickSort (3.Παράδειγµα Εκτέλεσης) 41∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 18 7 4 11 9 20 6 1 22 19 14 5 8 3 10 13 8 7 4 11 9 13 6 1 10 3 14 5 18 19 22 20 0 1 2 3 4 5 6 7 8 9 10 11 8 7 4 11 9 13 6 1 10 3 14 5 6 7 4 5 3 1 8 13 10 9 14 11 13 14 15 19 22 20 19 22 20 14 15 22 20 20 22 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 3 4 5 6 7 8 9 10 11 13 14 18 19 20 22 0 1 2 3 4 5 6 7 4 5 3 1 3 1 4 5 6 7 7 8 9 10 11 13 10 9 14 11 11 10 9 13 14 5 7 7 0 1 2 3 3 1 4 5 1 3 4 5 0 1 1 2 3 4 5 4 5 3 5 5 7 8 9 11 10 9 9 10 11 11 14 14 7 8 9 10 9 10 8 10 10 14 20 20
  • 42. 42∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Η διαµέριση των στοιχείων στα µικρότερα και µεγαλύτερα ή ίσα µπορεί να γίνει µε πολλούς τρόπους: Π.χ. ένας απλός τρόπος είναι να χρησιµοποιήσουµε έναν βοηθητικό πίνακα που να βάζουµε στα αριστερά τα µικρότερα στοιχεία και στα δεξιά τα µεγαλύτερα στοιχεία του οδηγού. Ωστόσο εµείς θα µελετήσουµε έναν τρόπο διαµέρισης, που είναι µια µικρή παραλλαγή του σχήµατος Hoare: Σαρώνουµε τον πίνακα από αριστερά ψάχνοντας για ένα στοιχείο που είναι µεγαλύτερο του οδηγού Σαρώνουµε τον πίνακα από δεξιά ψάχνοντας για ένα στοιχείο που είναι µικρότερο (ή ίσο) του οδηγού Ανταλλάσσουµε τα δύο στοιχεία και επαναλαµβάνουµε µέχρι να γίνει ο χωρισµός των στοιχείων. Μελετούµε το παράδειγµα της επόµενης διαφάνειας A. Θεωρία 6. Γρήγορη Ταξινόµηση (Quick Sort) 4. Η διαδικασία partition
  • 43. Παράδειγµα εκτέλεσης της partition: Τερµατισµός: Ανταλλαγή του οδηγού στοιχείου µε το «δεξιό» δείκτη A. Θεωρία 6. Γρήγορη Ταξινόµηση (Quick Sort) 4. Η διαδικασία partition 43∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 0 1 2 3 4 5 6 7 8 9 9 8 4 11 2 20 6 1 22 19 i=3 j=8 0 1 2 3 4 5 6 7 8 9 9 8 4 11 2 20 6 1 22 19 8 4 1 11 22 19 0 1 2 3 4 5 6 7 8 9 9 8 4 1 2 20 6 11 22 19 9 8 4 1 11 22 19i=5 j=6 0 1 2 3 4 5 6 7 8 9 9 8 4 1 2 6 20 11 22 19 0 1 2 3 4 5 6 7 8 9 9 8 4 1 2 20 6 11 22 19 9 8 4 1 2 6 20 11 22 19 i=7j=6 0 1 2 3 4 5 6 7 8 9 9 8 4 1 2 6 20 11 22 19 0 1 2 3 4 5 6 7 8 9 6 8 4 1 2 9 20 11 22 19
  • 44. A. Θεωρία 6. Γρήγορη Ταξινόµηση (Quick Sort) 4. Η διαδικασία partition 44∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Η υλοποίηση της partition µε το σχήµα του Hoare σε ψευδογλώσσα είναι η ακόλουθη: int partition(int *pinakas, int start, int finish) { int pivot, i, j; pivot=pinakas[start]; i=start+1; j=finish; while(1) { while(pinakas[i]<=pivot && i<=finish) i++; while(pinakas[j]>pivot && j>=start) j--; if (i<j) swap(&pinakas[i],&pinakas[j]); else { swap(&pinakas[start],&pinakas[j]); return j; } } }
  • 45. A. Θεωρία 6. Γρήγορη Ταξινόµηση (Quick Sort) 5. Άσκηση 45∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα Άσκηση: Μελετήστε το πρόγραµµα quicksort.c και “καθαρίστε” το από τις εκτυπώσεις ώστε η quicksort να είναι µια αυτόνοµη συνάρτηση.
  • 46. Β. Ασκήσεις Εφαρµογή 1: Ταξινόµηση Πραγµατικών Αριθµών ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 46 Μετατρέψτε την bubble sort και την quick sort έτσι ώστε να πραγµατοποιούν ταξινόµηση σε τύπο δεδοµένων double.
  • 47. Β. Ασκήσεις Εφαρµογή 2: Ταξινόµηση σε Φθίνουσα Σειρά ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 47 Μετατρέψτε την insertion sort και την merge sort έτσι ώστε να πραγµατοποιούν ταξινόµηση σε φθίνουσα σειρά.
  • 48. Β. Ασκήσεις Εφαρµογή 3: Quick Sort που χρησιµοποιεί Insertion Sort ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 48 Προτείνεται η εξής υβριδική µέθοδος ταξινόµησης: Εκτελούµε τον αλγόριθµο Quick Sort Αν ωστόσο ο πίνακας έχει το πολύ 5 στοιχεία, τότε αυτός ταξινοµείται µε χρήση της insertion sort Κατασκευάστε την νέα µέθοδο ταξινόµησης µε όνοµα hybrid sort και αναδείξτε τη χρήση της µε µία κατάλληλη συνάρτηση main.
  • 49. Β. Ασκήσεις Εφαρµογή 4.1: Εκτέλεση όλων των αλγορίθµων ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 49 ∆ηµιουργήστε ένα πρόγραµµα το οποίο: ∆ηµιουργείται ένας πίνακας 100 ακεραίων αριθµών. Οι τιµές του πίνακα να είναι ακέραιοι στο εύρος [0U1000] Καλούνται διαδοχικά οι 5 αλγόριθµοι ταξινόµησης που µελετήσαµε και προβάλλεται το αποτέλεσµα της ταξινόµησης του πίνακα.
  • 50. Β. Ασκήσεις Εφαρµογή 4.2: Πλήθος Συγκρίσεων των Αλγορίθµων Αναζήτησης ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 50 Τροποποιήστε τους 3 µη αναδροµικούς αλγορίθµους, ώστε να µετράνε το πλήθος των συγκρίσεων που πραγµατοποιούνται. Μετά την εκτέλεση του αντίστοιχου αλγορίθµου να τυπώνεται το πλήθος των συγκρίσεων που πραγµατοποιήθηκαν. Σηµείωση: Όταν λέµε συγκρίσεις εννοούµε τις συγκρίσεις που γίνονται µεταξύ στοιχείων του πίνακα.
  • 51. Β. Ασκήσεις Εφαρµογή 4.3: Πλήθος Συγκρίσεων των Αλγορίθµων Αναζήτησης ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 51 Τροποποιήστε τους 2 αναδροµικούς αλγορίθµους, ώστε να µετράνε το πλήθος των συγκρίσεων που πραγµατοποιούνται. Μετά την εκτέλεση του αντίστοιχου αλγορίθµου να τυπώνεται το πλήθος των συγκρίσεων που πραγµατοποιήθηκαν. Σηµείωση: Όταν λέµε συγκρίσεις εννοούµε τις συγκρίσεις που γίνονται µεταξύ στοιχείων του πίνακα.
  • 52. Β. Ασκήσεις Εφαρµογή 4.4: Πειραµατική Μελέτη των Αλγορίθµων Αναζήτησης ∆ηµήτρης Ψούνης, Αλγόριθµοι σε C, Μάθηµα 3: Ταξινόµηση Πίνακα 52 Πειραµατιστείτε δοκιµάζοντας διαφορετικές διαστάσεις στον πίνακα. Ποιος αλγόριθµος δείχνει να επικρατεί των άλλων;