ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
3.4 Στοίβα (stack) (μόνο θεωρία)
Advertisements

Εισαγωγή στους Αλγόριθμους Ταξινόμησης
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Εισαγωγή στην επιστήμη των υπολογιστών
Διαφάνειες παρουσίασης #5
ΜΑΘ-3122/106 Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Αλγόριθμοι Ταξινόμησης
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος α
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Διαίρει-και-Βασίλευε
Ουρά Προτεραιότητας: Heap
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Ωμή Βία Είναι μία άμεση προσέγγιση που βασίζεται στην εκφώνηση του προβλήματος και τους ορισμούς.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Ταξινόμηση και Αναζήτηση
Αλγόριθμοι Ταξινόμησης
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη C Ακέραιοι.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ §3.7 ΤΑΞΙΝΟΜΗΣΗ
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Ταξινόμηση - Sorting.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Ενότητα 2.1 Αλγόριθμοι Ταξινόμησης O(n 2 ) & O(nlogn) Σχεδίαση & Ανάλυση Αλγορίθμων.
8-1 ΜΑΘΗΜΑ 8 ο Εισαγωγή στους Αλγόριθμους Ταξινόμησης.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Δομές Δεδομένων και Αρχεία
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
Α.Ε.Π.Π. ΟΠΤΙΚΟΠΟΙΗΜΕΝΗ ΠΑΡΟΥΣΙΑΣΗ ΤΗΣ ΤΑΞΙΝΟΜΗΣΗΣ ΠΙΝΑΚΑ ΜΕ ΤΗ ΜΕΘΟΔΟ ΤΗΣ ΦΥΣΣΑΛΙΔΑΣ (Bubble Sort) ΙΟΡΔΑΝΗΣ ΣΑΒΒΟΥΛΙΔΗΣ
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Πίνακες και αλφαριθμητικά
Π Ι Ν Α Κ Ε Σ (arrays) ΤΑΞΙΝΟΜΗΣΗ
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας Ε. Μαρκάκης
Ταξινόμηση Ορισμός: Δοθέντων των στοιχείων a1,a2,… ,an η ταξινόμηση συνίσταται στην αντιμετάθεση της θέσης των στοιχείων ώστε να τοποθετηθούν με μια νέα.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΓΕΜΙΣΜΑ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ (Άσκηση 1)
Ανάπτυξη εφαρμογής με οπτικοποιημένο περιβάλλον για τους αλγόριθμους ταξινόμησης και αναζήτησης ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ Γεωργιαδης νικολαοσ.
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
11η Διάλεξη Ταξινόμηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης
Φοιτητής: Τσακίρης Αλέξανδρος Επιβλέπων: Ευάγγελος Ούτσιος
Ουρά Προτεραιότητας (priority queue)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Πτυχιακή εργασία του Παύλου Παντικάκη (2468)
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
Sắp thứ tự.
Μεταγράφημα παρουσίασης:

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Διαφάνειες παρουσίασης #4 4 Πίνακες ως ΑΤΔ 4 Αναζήτηση σε πίνακες 4 Ταξινόμηση πινάκων 4 Ορισμός τύπων 4 Απαριθμήσεις

2Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες ως ΑΤΔ(i) u Βασική πράξη: προσπέλαση στοιχείου a[i] u Συνήθως υλοποιούνται με κάποιο ΣΤΔ πινάκων (arrays) l Κόστος προσπέλασης: O(1) u Ο ΣΤΔ του μονοδιάστατου πίνακα επαρκεί για την υλοποίηση κάθε ΑΤΔ πίνακα l Συνάρτηση loc υπολογίζει τη θέση ενός στοιχείου του ΑΤΔ πίνακα στο μονοδιάστατο ΣΤΔ πίνακα της υλοποίησης

3Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες ως ΑΤΔ(ii) u ΑΤΔ πίνακα δύο διαστάσεων n  m loc (n, m, i, j) = m (i – 1) + j – 1 u Αρίθμηση κατά στήλες loc (n, m, i, j) = n (j – 1) + i – i = 1 i = 2 i = 3 j = n = 3 m = 6

4Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες ως ΑΤΔ(iii) u ΑΤΔ κάτω τριγωνικού πίνακα n  n loc (n, i, j) = i (i – 1) / 2 + j – 1 u Ομοίως για συμμετρικούς πίνακες i = 1 i = 2 i = 3 j = n = i = 4 i = 5

5Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες ως ΑΤΔ(iv) u ΑΤΔ τριδιαγώνιου πίνακα n  n loc (n, i, j) = 2 i + j – i = 1 i = 2 i = 3 j = n = i = 4 i = 5

6Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Πίνακες ως ΑΤΔ(v) u ΑΤΔ αραιού πίνακα n  m l Υλοποίηση με δυαδικό πίνακα l Υλοποίηση με τρεις πίνακες row = [ 1, 2, 3, 3, 4 ]col = [ 1, 3, 2, 3, 5 ] val = [ a 1, a 2, a 3, a 4, a 5 ] a1a1 a2a2 a3a3 a4a4 i = 1 i = 2 i = 3 j = n = 4 a5a5 i = 4 m = 5

7Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αναζήτηση σε πίνακες(i) u Σειριακή αναζήτηση l Τα στοιχεία διατρέχονται κατά σειρά l Κόστος: O(n) n = 8 x = 42 (1)(3)(2)(4)(5) l Βελτίωση: στοιχείο “φρουρός” (sentinel) n = 8 x = 7 7

8Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αναζήτηση σε πίνακες(ii) u Υλοποίηση σε C int ssearch (int a[], int n, int x) { int i; for (i = 0; i < n; i++) if (a[i] == x) return i; return -1; }

9Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αναζήτηση σε πίνακες(iii) u Υλοποίηση σε C με φρουρό int ssearch_s (int a[], int n, int x) { int i; a[n] = x; for (i = 0; a[i] != x; i++); return (i < n) ? i : -1; }

10Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Αναζήτηση σε πίνακες(iv) u Δυαδική αναζήτηση l Ο πίνακας πρέπει να είναι ταξινομημένος l Κόστος: O(logn) n = 8 x = 42 (1)(3)(2) u Άλλες μέθοδοι αναζήτησης l Μικρότερο κόστος  περισσότερος χώρος l Πίνακες κατακερματισμού (hash tables)

11Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(i) u Ταξινόμηση επιλογής (selection sort) l Ιδέα: για κάθε i κατ’ αύξουσα σειρά βρες το μικρότερο των στοιχείων μετά το a[i] αντιμετάθεσέ το με το a[i] l Κόστος: Ο(n 2 ) l Βελτίωση: στοιχείο φρουρός

12Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(ii) u Ταξινόμηση επιλογής, υλοποίηση σε C void ssort (int a[], int n) { int i, j; for (i = 0; i < n-1; i++) { int min = a[i], minj = i; for (j = i+1; j < n; j++) if (a[j] < min) min = a[minj = j]; a[minj] = a[i]; a[i] = min; } }

13Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(iii) u Ταξινόμηση εισαγωγής (insertion sort) l Χρησιμοποιούμε αυτό τον τρόπο όταν ταξινομούμε τα χαρτιά μιας τράπουλας l Ιδέα: για κάθε i από το δεύτερο και κατ’ αύξουσα σειρά τοποθέτησε το a[i] στη σωστή του θέση μεταξύ των στοιχείων που είναι πριν από αυτό l Κόστος: Ο(n 2 ) l Βελτιώσεις: στοιχείο φρουρός δυαδική εισαγωγή

14Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(iv) u Ταξινόμηση εισαγωγής, υλοποίηση σε C void isort (int a[], int n) { int i, j; for (i = 1; i < n; i++) { int x = a[i]; for (j = i-1; j >= 0; j--) if (x < a[j]) a[j+1] = a[j]; else break; a[j+1] = x; } }

15Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(v) u Ταξινόμηση φυσαλίδας (bubble sort) l Ιδέα: για κάθε i κατ’ αύξουσα σειρά για κάθε j > i κατά φθίνουσα σειρά αν a[j-1] > a[j] αντιμετάθεσε τα a[j-1] και a[j] l Κόστος: Ο(n 2 ) l Βελτιώσεις: σταματά αν σε ένα πέρασμα δεν γίνει αντιμετάθεση σε ποιο σημείο έγινε η τελευταία αντιμετάθεση αλλαγή κατεύθυνσης μεταξύ διαδοχικών περασμάτων (shake sort)

16Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(vi) u Ταξινόμηση φυσαλίδας, υλοποίηση σε C void bsort (int a[], int n) { int i, j; for (i = 0; i < n; i++) for (j = n-1; j > i; j--) if (a[j-1] > a[j]) { int temp = a[j-1]; a[j-1] = a[j]; a[j] = temp; } }

17Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(vii) u Ταξινόμηση με διαμέριση (quick sort) l Ιδέα: διάλεξε ένα τυχαίο στοιχείο x του πίνακα διαμέρισε τον πίνακα, μεταφέροντας: –τα στοιχεία μικρότερα του x στην αρχή –τα στοιχεία μεγαλύτερα του x στο τέλος αναδρομικά, ταξινόμησε τα δύο μέρη l Κόστος:Ο(n 2 ) στη χειρότερη περίπτωση Ο(n logn) κατά μέσο όρο

18Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(viii) u Quick sort, υλοποίηση σε C void qsort (int a[], int n) { qsort_auxil(a, 0, n-1); } void qsort_auxil (int a[], int lower, int upper) { if (lower < upper) { int x = a[(lower + upper) / 2]; int i, j; for (i = lower, j = upper; i <= j; i++, j--) { while (a[i] < x) i++; while (a[j] > x) j--;

19Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(ix) u Quick sort, υλοποίηση σε C(συνέχεια) if (i <= j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } qsort_auxil(a, lower, j); qsort_auxil(a, i, upper); } }

20Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ταξινόμηση πινάκων(x) u Άλλοι τρόποι ταξινόμησης l Ταξινόμηση του Shell (shell sort), κόστος: Ο(n 2 ) l Ταξινόμηση σε σωρό (heap sort), κόστος: Ο(n logn) l Ταξινόμηση με συγχώνευση (merge sort), κόστος: Ο(n logn)

21Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Ορισμοί τύπων u Συνώνυμα απλών τύπων typedef double real; real x, y; u Συνώνυμα σύνθετων τύπων typedef double vector [10]; vector v; for (i = 0; i < 10; i++) v[i] = i;

22Νίκος ΠαπασπύρουΠρογραμματιστικές Τεχνικές Απαριθμήσεις (enumerations) u Ο τύπος enum enum color_tag { GREEN, RED, BLUE, WHITE, BLACK }; enum color_tag c; c = GREEN; typedef enum { GREEN, RED, BLUE, WHITE, BLACK } color; color c = WHITE;