Αλγόριθμοι ταξινόμησης (Sorting Algorithms) Παναγιώτης Σφέτσος, PhD

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Αλγόριθμοι ταξινόμησης (Sorting Algorithms) Παναγιώτης Σφέτσος, PhD"

Transcript

1 (Object Oriented Programming) Αλγόριθμοι ταξινόμησης (Sorting Algorithms) PhD

2 Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν οι παρακάτω αλγόριθμοι ταξινόμησης: Bubble Sort - Ταξινόμηση φυσαλίδας Insertion Sort - Ταξινόμηση με Εισαγωγή Selection Sort - Ταξινόμηση με Επιλογή Quick Sort Γρήγορη Ταξινόμηση Merge Sort - Ταξινόμηση με Συγχώνευση 2

3 Αλγόριθμοι Ταξινόμησης Το πρόβλημα της ταξινόμηση θεωρείται θεμελιώδες αλγοριθμικό πρόβλημα: Η ταξινόμηση απαραίτητη σε πολλές εφαρμογές (περίπου το 25% του υπολογιστικού χρόνου). Λειτουργίες όπως η αναζήτηση γίνεται γρηγορότερα όταν τα στοιχεία είναι ταξινομημένα. Είδαμε ότι η αναζήτηση σε ταξινομημένα στοιχεία. (σε πίνακα) ολοκληρώνεται σε χρόνο O(log n), έναντι Ο(n) στην σειριακή. Ενδιάμεση λειτουργία για σχεδιασμό άλλων αλγορίθμων π.χ. δενδρικών δομών. Διαφορετικές τεχνικές, με διαφορετικούς αλγόριθμους, που βρίσκουν εφαρμογή σε άλλες σημαντικές εφαρμογές. 3

4 Τεχνικές ταξινόμησης: Αλγόριθμοι Ταξινόμησης Τεχνικές ανταλλαγής (Exchange techniques), π.χ. οι bubble και insertion sort, με χρονική πολυπλοκότητα O(n 2 ). Τεχνικές δένδρικών δομών (Tree-based techniques), π.χ. η δυαδική δενδρική ταξινόμηση (binary tree sorting) με πολυπλοκότητα Ο(n log2 n ). Αναδρομικές τεχνικές (Recursive techniques), π.χ. quick και merge sort με πολυπλοκότητα Ο(n log2 n ) αλλά καλύτερης απόδοσης από άλλες τεχνικές. 4

5 Bubble Sort (1/4) Ταξινομήσεις με Ανταλλαγή (Exchange Sorting) Ταξινόμηση φυσαλίδας (Bubble Sort) Ο αλγόριθμος αυτός συγκρίνει κάθε στοιχείο με το επόμενό του σαρώνοντας τον πίνακα, αναδύοντας τις μικρότερες τιμές στις κατάλληλες θέσεις σαν φυσαλίδες. Στην καλύτερη περίπτωση, με την πρώτη επανάληψη (αν ο πίνακας είναι ταξινομημένος), επομένως δεν χρειάζεται άλλη επανάληψη, και τότε η χρονική πολυπλοκότητα είναι O(n). Στην χειρότερη περίπτωση ο αλγόριθμος απαιτεί n-1 επαναλήψεις. Η πρώτη επανάληψη κάνει n-1 συγκρίσεις, η δεύτερη επανάληψη κάνει n-2 συγκρίσεις, κ.ο.κ. Η τελευταία επανάληψη κάνει 1 σύγκριση. Έτσι, ο συνολικός αριθμός των συγκρίσεων είναι: 5

6 Bubble Sort (2/4) Έστω ο πίνακας int nums[] = {7,19,24,13,8,17,11}; : : Αλλαγή i=1, j=2, A[2]>A[3] 7,19,24,13,8,17,11 7,19,13,24,8,17,11 i=1, j=3, A[3]>A[4] 7,19,13,24,8,17,11 7,19,13,8,24,17,11 i=1, j=4, A[4]>A[5] 7,19,13,8,24,17,11 7,19,13,8,17,24,11 i=1, j=5, A[5]>A[6] 7,19,13,8,17,24,11 7,19,13,8,17,11,24 με το 1 ο πέρασμα η max-τιμή πάει στο τελευταίο κελί i=2, j=1, A[1]>A[2] 7,19,13,8,17,11,24 7,13,19,8,17,11,24 : : : 6

7 Bubble Sort (3/4) class BubbleSort { public static void main(string[] args) { int nums[] = {7,19,24,13,8,17,11}; System.out.println("Prin tin taxinomisi"); for (int i = 0; i < nums.length; i++) System.out.print(nums[i]+" "); System.out.println(); BSort(nums); System.out.println("Meta tin taxinomisi"); for (int i = 0; i < nums.length; i++) System.out.print(nums[i]+" "); System.out.println(); } 7

8 Bubble Sort (4/4) public static void BSort(int[] A) { int i, j; int temp; boolean flag; for (i=1; i < A.length; i++) { flag=true; for (j=0; j < A.length-i; j++) if (A[j] > A[j+1]) { temp=a[j]; A[j]= A[j+1]; A[j+1]=temp; flag=false; } if (flag) return; }}} Με κάθε αλλαγή αλλάζουµε και την τιµή της µεταβλητής flag σε false. Αν η µεταβλητή διατηρεί την τιµή true, σηµαίνει ότι δεν έχει γίνει κάποια ανταλλαγή τιµών, εποµένως ο πίνακας είναι ταξινοµηµένος και δεν χρειάζεται να γίνει άλλο πέρασµα. 8

9 Insertion Sort (1/4) Ταξινομήσεις με Εισαγωγή (Insertion Sort) Η ταξινόµηση µε εισαγωγή εισάγει ένα-ένα τα στοιχεία της λίστας στη σωστή τους θέση. Σε οποιοδήποτε βήμα (για μερικώς ταξινομημένο πίνακα A[1..(i-1)] ): εισάγεται το στοιχείο Α[i] στην ακολουθία Α[1..(i-1)] στη σωστή θέση, μετακινούνται όλα τα στοιχεία που είναι µεγαλύτερα του Α[i] µια θέση δεξιά. έτσι στην επανάληψη i για να εισαχθεί ένα στοιχείο στον πίνακα μεγέθους n, απαιτούνται n-συγκρίσεις και n-μετακινήσεις. Αν Τ(n) είναι η πολυπλοκότητα του αλγορίθμου της ταξινόμησης με εισαγωγή και c μια σταθερά που εκφράζει τις λοιπές εργασίες όπως η εκχώρηση τιμών και λοιπών συγκρίσεων, τότε: 9

10 Insertion Sort (2/4) Ταξινομήσεις με Εισαγωγή (Insertion Sort) Ο αλγόριθμος αυτός είναι πιο γρήγορος από τον αλγόριθμο bubble sort: Έστω ο πίνακας int nums[]={7,19,24,13,8,17,11}; Θεωρώ ότι το 1 ο στοιχείο βρίσκεται στην σωστή ταξινομική του θέση Α[0]=7. Ξεκινώ από το 2 ο στοιχείο current=19 (για i=1 και j=1) και ελέγχω αν 7>19, δηλ. αν το προηγούμενο από το current στοιχείο είναι μεγαλύτερό του, εδώ δεν είναι άρα είναι ταξινομημένο αριστερά και έτσι δεν μπαίνει στο while-loop. Συνεχίζω με το 3 ο στοιχείο current=24 (για i=2 και j=2) και ελέγχω αν 19>24, που δεν είναι άρα είναι ταξινομημένο αριστερά και έτσι δεν μπαίνει στο while-loop. Συνεχίζω με το 4 ο στοιχείο current=13 (για i=3 και j=3) και ελέγχω αν 24>13, που είναι άρα μπαίνει στο while-loop για να σπρώξει τα μεγαλύτερα του 13, πρώτα το 19 και μετά το 24 (while loop), προς τα δεξιά, κ.ο.κ. 10

11 Insertion Sort (3/4) class InsertSort { public static void main(string[] args) { int nums[] = {7,19,24,13,8,17,11}; System.out.println("Prin tin taxinomisi"); for (int i = 0; i < nums.length; i++) System.out.print(nums[i]+" "); System.out.println(); InsSort(nums); System.out.println("Meta tin taxinomisi: Insertion Sort"); for (int i = 0; i < nums.length; i++) System.out.print(nums[i]+" "); System.out.println(); } 11

12 Insertion Sort (4/4) public static void InsSort(int[] A) { for (int i=1; i < A.length; i++) { int current = A[i]; int j=i; // metakinisi megalyteron timon dexia while (j>0 && A[j-1] > current) { A[j] = A[j-1]; j--;} A[j] = current; } } } Υπάρχουν και άλλες παραλλαγές του αλγορίθμου(άσκηση-1) (Να υλοποιήσετε την Insertion Sort με άλλο αλγόριθμο) 12

13 Selection Sort (1/4) Ταξινομήσεις με Επιλογή (Selection Sort) Ο αλγόριθμος τοποθετεί κάθε τιμή (μία την φορά) στην σωστή τελική ταξινομημένη θέση. Δηλ. ο αλγόριθμος επιλέγει την τιμή που θα πάει σε κάθε θέση του πίνακα. Τα βήματα: 1. Επιλογή του μικρότερου στοιχείου 2. Ανταλλαγή με το πρώτο στοιχείο 3. Επανάληψη των βημάτων 1 και 2 για τα εναπομείναντα στοιχεία Το μικρότερο στοιχείο μεταξύ n στοιχείων μπορεί να βρεθεί με την χρήση ενός loop σε n-1 συγκρίσεις και ανταλλαγή στην 1 η θέση. Για το 2 ο μικρότερο ελέγχονται τα υπόλοιπα n-1 στοιχεία, κ.ο.κ. Άρα ο χρόνος εκτέλεσης του αλγόριθμου selection sort για n στοιχεία είναι: (n 1) + (n 2) = n(n - 1) / 2 = O(n 2 ) (και από τα εστιασμένα loops) 13

14 Selection Sort (2/4) Ταξινομήσεις με Επιλογή (Selection Sort) Έστω ο πίνακας int nums[]={7,19,24,13,8,17,11}; Πρώτα βρίσκει το μικρότερο στοιχείο to 7 και το ανταλλάσσει με την τιμή στην πρώτη θέση του πίνακα (στην θέση 0). Από τα υπόλοιπα στοιχεία βρίσκει το μικρότερο τους το 8 και το ανταλλάσσει με την τιμή στην δεύτερη θέση του πίνακα (στην θέση 1), ενώ στην θέση που ήταν το 8 (4 η ) βάζει το 19 που ήταν στην 2 η θέση (swap values), κ.ό.κ I= I= I= I= I= I=

15 Selection Sort (3/4) class SelectionSort { public static void main(string[] args) { int nums[] = {7,19,24,13,8,17,11}; System.out.println("Prin tin taxinomisi"); for (int i = 0; i < nums.length; i++) System.out.print(nums[i]+" "); System.out.println(); SelSort(nums); System.out.println("Meta tin taxinomisi: Selection Sort"); for (int i = 0; i < nums.length; i++) System.out.print(nums[i]+" "); System.out.println(); } 15

16 Selection Sort (4/4) public static void SelSort(int[] A) { int pos, temp; for (int i = 0; i < A.length-1; i++){ // thesi tis min timis pos=i; for (int k=i+1; k<a.length; k++) if (A[k] < A[pos]) pos=k; //swap tis times pos" kai "i" temp = A[pos]; A[pos] = A[i]; A[i] = temp; } } } Το εσωτερικό loop βρίσκει το μικρότερο, το αποθηκεύει στην temp και την θέση του στην pos. Στην τελευταία εντολή του εξωτερικού loop γίνεται η ανταλλαγή των στοιχείων. Με την 1 η επανάληψη του εξωτερικού loop το μικρότερο στοιχείο βρίσκεται στην 1 η θέση, με την 2 η το δεύτερο μικρότερο στην 2 η θέση, κ.ο.κ. 16

17 Σύγκριση πολυπλοκότητας Insertion Sort και Selection Sort Θα χρησιμοποιήσουμε δύο κριτήρια για να συγκρίνουμε τους δύο αλγορίθμους (και οι δύο με χρονική πολυπλοκότητα O(n 2 )): (1) τα βήματα που απαιτούνται για την ανεύρεση ενός στοιχείου και (2) οι ανταλλαγές των στοιχείων (swaps) Insertion Sort: Στην καλύτερη περίπτωση ο πίνακας είναι ήδη ταξινομημένος, οπότε η χρονική πολυπλοκότητα είναι της τάξης O(n) - βημάτων. Σ αυτή την περίπτωση ο αλγόριθμος βγαίνει πιο γρήγορα από τον δεύτερο βρόχο. Selection Sort: Απαιτούνται πάντα O(n 2 ) βήματα (ο αλγόριθμος δεν βγαίνει γρήγορα από τους βρόχους), έτσι η καλύτερη περίπτωση και η χειρότερη είναι ίδιες, ως προς την χρονική πολυπλοκότητα. Ως προς τις ανταλλαγές των στοιχείων η Selection (πιο αποδοτική) απαιτεί Ο(n), ενώ η Insertion O(n 2 ), στη χειρότερη περίπτωση (ήδη ταξινομημένος πίνακας σε φθίνουσα σειρά). 17

18 Άσκηση 1η Να γίνει το πρόγραμμα αναζήτησης και εμφάνισης των στοιχείων ενός υπάλληλου σε ένα πίνακα N - αντικειμένων τύπου Employee. Ορίστε την κλάση Employee με private πεδία: (1) Όνομα, String, (2) Επώνυμο, String, (3) Κωδικός Υπαλ, int και (4) Μισθός, double. Το πρόγραμμα θα εκτελεί (1) σειριακή αναζήτηση ως προς το Επώνυμο και (2) δυαδική αναζήτηση ως προς τον Κωδικό Υπαλ. (σε ταξινομημένο ως προς τον Κωδικό-πίνακα). Οι εργασίες θα υλοποιούνται από ένα μενού επιλογών. Οι εργασίες θα καλούνται κατάλληλα, δηλ. δεν θα μπορείς να κάνεις δυαδική αναζήτηση, αν δεν έχει εκτελεστεί πρώτα η ταξινόμηση ως προς τον κωδικό (όποια ταξινόμηση θέλετε εσείς). Θα εμφανίζονται τα κατάλληλα μηνύματα που θα καθοδηγούν τις εργασίες. Για την σειριακή αναζήτηση: Το πρόγραμμα θα ζητά το Επώνυμο του υπάλληλου που αναζητάμε. Αν το βρει θα εμφανίσει όλα τα στοιχεία του, διαφορετικά το μήνυμα Den yparxei o Ypallilos. Για την δυαδική αναζήτηση: Το πρόγραμμα θα ζητά τον κωδικό του και θα υλοποιεί τα ίδια με την σειριακή αναζήτηση (εμφάνιση στοιχείων). 18

19 Αναδρομικές Τεχνικές Ταξινόμησης (Recursive Sorting) Οι σημαντικότερες αναδρομικές τεχνικές είναι η γρήγορη ταξινόμηση (quick sort) και η ταξινόμηση με συγχώνευση (merge sort) που ακολουθούν την διαδικασία διαίρει και βασίλευε (divide and conquer), δηλ. με αναδρομικό αλγόριθμο το πρόβλημα μοιράζεται σε δύο μέρη τα οποία ταξινομούνται ξεχωριστά (partitioning) και στο τέλος οι λύσεις συνδυάζονται. Στη quick sort δεν χρειάζεται βοηθητικός πίνακας (τα 2 μέρη ταξινομούνται επιτόπου - στον ίδιο πίνακα), ενώ στη merge sort απαιτείται. Η ταξινόμηση των δύο τμημάτων γίνεται με την βοήθεια μιας τιμής άξονα (pivot) που επιλέγουμε (συνήθως η μεσαία του πίνακα). Η Quicksort είναι η ταχύτερη τεχνική ταξινόμησης και υλοποιείται στην Java με την μέθοδο Arrays.sort(). Η υλοποίησή της στην Java είναι διαφορετική από την υλοποίηση που θα διδαχτείτε (2 pivot), και δοκιμασμένη (να την προτιμάτε). Προσοχή στους αλγορίθμους ταξινόμισης, γιατί κάποιοι δεν υλοποιούνται σωστά (για παράδειγμα υλοποιούνται σωστά μόνο για μονό ή ζυγό πλήθος αριθμών, κλπ.) 19

20 Γρήγορη Ταξινόμηση (Quick Sort) (1/12) Γρήγορη Ταξινόμηση (Quick Sort) Αναπτύχθηκε από τον C.Α.R Hoare το 1962 και παρουσιάζεται παρακάτω Συνοπτικά εκτελούμε αναδρομικά: 1) διαλέγουμε ένα στοιχείο p (π.χ. πρώτη ή κεντρική τιμή στον πίνακα) που ονομάζουμε άξονα pivot. 2) χωρίζουμε τον πίνακα σε δύο μέρη (partitioning) Q1 και Q2, όπου το Q1 θα περιέχει όλα τα στοιχεία του πίνακα που είναι μικρότερα ή ίσα από τον pivot, και το Q2 θα περιέχει όλα τα στοιχεία που είναι μεγαλύτερα από τον pivot. 20

21 Γρήγορη Ταξινόμηση (Quick Sort) (2/12) 3) καλούμε αναδρομικά τον αλγόριθμο QuickSort στο Q1, και βρίσκουμε λύση A1, και στο Q2 και βρίσκουμε λύση A2. 4) τέλος η λύση θα είναι ο ταξινομημένος πίνακας [Α1, p, Α2]. Παράδειγμα: [63, 21, 7, 33, 52, (31), 9, 11, 20, 95, 74] Διαλέγουμε σαν pivot το 31, και τοποθετούμε: <31 (31) >=31 Quicksort Quicksort [7,9,11,20,21] 31 [33,52,63,74,95] 21

22 Γρήγορη Ταξινόμηση (Quick Sort) (3/12) Κάθε διαχωρισμός του πίνακα (partition) τοποθετεί τον pivot στη σωστή θέση. Η θέση του pivot επιστρέφεται από την μέθοδο partition. Εδώ σαν pivot διαλέγουμε το 1 ο στοιχείο. Προσέξτε τις κινήσεις των δεικτών low και high και τις αλλαγές τιμών (swap (swapping). Όταν high < low, τότε η αναζήτηση τελειώνει, ο pivot τοπο- θετείται στην σωστή θέση και η νέα θέση του επιστρέφεται. Παράδειγμα από το βιβλίο του D. Liang (Java Programing, 10 th edition) 22

23 Γρήγορη Ταξινόμηση (Quick Sort) (4/12) Μια υλοποίηση αλγορίθμου QuickSort (από το βιβλίο του D. Liang) public class QuickSortLiang { public static void quicksort(int[] list) { quicksort(list, 0, list.length - 1); } public static void quicksort(int[] list, int first, int last) { if (last > first) { int pivotindex = partition(list, first, last); quicksort(list, first, pivotindex - 1); quicksort(list, pivotindex + 1, last); }} /** Partition the array list[first..last] */ public static int partition(int[] list, int first, int last) { int pivot = list[first]; //Choose the first element as the pivot int low = first + 1; int high = last; //Index for forward search //Index for backward search 23

24 Γρήγορη Ταξινόμηση (Quick Sort) (5/12) while (high > low) { // Search forward from left while (low <= high && list[low] <= pivot) low++; //ayxisi toy aristerou deikti // Search backward from right while (low <= high && list[high] > pivot) high--; //meiosi toy dexiou deikti // Swap two elements in the list if (high > low) { int temp = list[high]; list[high] = list[low]; list[low] = temp; } } 24

25 Γρήγορη Ταξινόμηση (Quick Sort) (6/12) while (high > first && list[high] >= pivot) high--; // Swap pivot with list[high] if (pivot > list[high]) { list[first] = list[high]; list[high] = pivot; return high;} else {return first;}} /** A test method */ public static void main(string[] args) { int[] list = {5,2,9,3,8,4,0,1,6,7}; quicksort(list); for (int i = 0; i < list.length; i++) System.out.print(list[i] + " "); System.out.println(); } } 25

26 Γρήγορη Ταξινόμηση (Quick Sort) (7/12) Μια άλλη υλοποίηση αλγορίθμου QuickSort (χρήση αντικειμένου) import java.util.arrays; public class QuickSortDemo{ public static void main(string args[]) { int[] nums = {6, 5, 3, 1, 8, 7, 2, 4}; System.out.println("Ataxinomitos pinakas"); System.out.println(Arrays.toString(nums)); System.out.println(); QuickSort algorithm = new QuickSort(); // taxinomisi toy pinaka me ton algorithmo quicksort algorithm.sort(nums); // emfanisi toy taxinomimenoy pinaka System.out.println(); System.out.println("Taxinomimenos pinakas me Quick Sort "); System.out.println(Arrays.toString(nums)); System.out.println(); } } 26

27 Γρήγορη Ταξινόμηση (Quick Sort) (8/12) class QuickSort { private int input[]; private int length; public void sort(int[] numbers) { if (numbers == null numbers.length == 0) { return; } this.input = numbers; length = numbers.length; quicksort(0, length - 1); } private void quicksort(int low, int high) { int i = low; int j = high; int x=0; x=low + (high - low) / 2; int pivot = input[low + (high - low) / 2]; //pivot sti mesi 27

28 Γρήγορη Ταξινόμηση (Quick Sort) (9/12) // Diairesi se 2 ypo-pinakes - partitioning while (i <= j) { /* Se kathe epanalipsi tha vriskoume apo ta aristera ena arithmo pou * tha einai megalyteros toy pivot kai ena arithmo apo ta dexia pou * tha einai mikroteros toy pivot. Otan teleiosei o elehos tha * ginetai h antimetathesi(swap) ton timon */ //prohoroyme apo ta aristera pros dexia mexri na xreiastei ena swap while (input[i] < pivot) {i++;} //prohoroyme apo ta dexia pros ta aristera mexri na xreiastei ena swap while (input[j] > pivot) {j--;} if (i <= j) { }} //kane to swap swap(i, j); // metakinise tous deiktes stin epomeni thesi kai stis 2 kateythinseis i++; j--; 28

29 Γρήγορη Ταξινόμηση (Quick Sort) (10/12) // anadromiki klisi tis quicksort() if (low < j) {quicksort(low, j); } if (i < high) {quicksort(i, high);} } } // H methodos antikatastasis private void swap(int i, int j) { int temp = input[i]; input[i] = input[j]; input[j] = temp; } 29

30 Γρήγορη Ταξινόμηση (Quick Sort) (11/12) Αταξινόμητος [6, 5, 3, (1), 8, 7, 2, 4] Θέση=3, pivot=1, i=0, j=3 Θέση=4, pivot=8, i=4, j=7 Θέση=3, pivot=6, i=3, j=6 Θέση=2, pivot=3, i=1, j=3 i=2, j=2 Θέση=3, pivot=5, i=3, j=4 [1, 5, 3, 6, 8, 7, 2, 4] (i=1, j=0) [1, 5, 3, 6, 4, 7, 2, 8] (i=7, j=6) [1, 5, 3, 2, 4, 7, 6, 8] (i=5, j=4) [1, 2, 3, 5, 4, 7, 6, 8] (i=2, j=2) [1, 2, 3, 5, 4, 7, 6, 8] (i=3, j=1) [1, 2, 3, 4, 5, 7, 6, 8] (i=4, j=3) Quicksort 2ο τμήμα [1, 2, 3, 4, 5, 7, 6, 8] Quicksort 1ο τμήμα [1, 2, 3, 4, 5, 7, 6, 8] Θέση=5, pivot=7, i=5, j=6 [1, 2, 3, 4, 5, 6, 7, 8] (i=6, j=5) Quicksort 2ο τμήμα [1, 2, 3, 4, 5, 6, 7, 8] Quicksort 1ο τμήμα [1, 2, 3, 4, 5, 6, 7, 8] Quicksort 2ο τμήμα [1, 2, 3, 4, 5, 6, 7, 8] Ταξινομημένος [1, 2, 3, 4, 5, 6, 7, 8] 30

31 Γρήγορη Ταξινόμηση (Quick Sort) (12/12) Ανάλυση Χρονικής Πολυπλοκότητας Ο ορισμός του pivot απαιτεί χρόνο Ο(1) και η διαδικασία partition ενός πίνακα n-στοιχείων εκτελείται σε χρόνο O(n) σε όλα τα επίπεδα αναδρομής. Η εκτέλεση της QuickSort απαιτεί στην χειρότερη περίπτωση χρόνο O(n 2 ) και στην καλύτερη περίπτωση χρόνο O(n*log (n)). Χειρότερη περίπτωση: Σ αυτή την περίπτωση ο pivot διαιρεί σε ένα μόνο μεγάλο υπο-πίνακα τον αρχικό με στοιχεία n-1. Έτσι ο αλγόριθμος απαιτεί χρόνο: (n - 1) + (n - 2) + g = O(n 2 ). Καλύτερη περίπτωση: Σ αυτή την περίπτωση ο pivot διαιρεί τον πίνακα σε 2-τμήματα, του ίδιου μεγέθους περίπου. Έτσι αν T(n) συμβολίζει τον χρόνο ταξινόμησης με την quick sort ενός πίνακα n- στοιχείων, τότε: 31

32 Ταξινόμηση με Συγχώνευση (Merge Sort) (1/7) Ο αλγόριθμος της ταξινόμησης με συγχώνευση ακολουθεί επίσης την διαδικασία του διαίρει και βασίλευε (divide and conquer). Δηλ., είναι μια αναδρομική διαδικασία όπου ο πίνακας μοιράζεται σε δύο μέρη τα οποία ταξινομούνται ξεχωριστά, και μετά αφού έχει γίνει η ταξινόμηση τα δύο μέρη συγχωνεύονται. Ο αλγόριθμος της ταξινόμησης: Διαιρεί αναδρομικά τον πίνακα σε δύο μέρη μέχρι να φτάσουμε σε πίνακες μεγέθους ενός στοιχείου. Συγχωνεύει, τους επιμέρους πίνακες που ταξινομούνται αναδρομικά χρησιμοποιώντας ένα βοηθητικό πίνακα. Παράδειγμα από το βιβλίο του D. Liang: 32

33 Ταξινόμηση με Συγχώνευση (Merge Sort) (2/7) import java.util.arrays; public class MergeSort { /** H methodos taxinomei tous arithmous tou pinaka A */ public static void mergesort(int[] A) { if (A.length > 1) { // anadromiki Merge sort tou 1ou misou tou pinaka(copy) int[] firsthalf = new int[a.length/2];//dhmioyrgia toy 1ou temp array System.arraycopy(A, 0, firsthalf, 0, A.length/2); mergesort(firsthalf); // anadromiki Merge sort tou 2ou misou tou pinaka(copy) int secondhalflength = A.length - A.length/2; //2o temp array int[] secondhalf = new int[secondhalflength]; System.arraycopy(A, A.length/2, secondhalf, 0, secondhalflength); mergesort(secondhalf); //Merge ton taxinomimenon 1ou-kai 2ou pinaka se ena temp-array merge(firsthalf, secondhalf, A); } } 33

34 Ταξινόμηση με Συγχώνευση (Merge Sort) (3/7) /* Merge tous 2 taxinomimenous pinakes list1 kai list2 * H methodos epanaliptika sygkrinei ta stoixeia ton list1 kai list2 * kai topothetei to mikrotero ston temp. public static void merge(int[] list1, int[] list2, int[] temp) { int current1 = 0; //trehon deiktis sto list1 int current2 = 0; //trehon deiktis sto list2 int current3 = 0; //trehon deiktis sto temp while (current1 < list1.length && current2 < list2.length) { if (list1[current1] < list2[current2]) /*an to mikrotero stoixeio vrethike sto list1 ayxise ton * current1 kata 1, diaforetika ayxise ton current2 kata 1 */ temp[current3++] = list1[current1++]; else temp[current3++] = list2[current2++]; } 34

35 Ταξινόμηση με Συγχώνευση (Merge Sort) (4/7) /* Ola ta stoixeia metaferontai ston temp * akomi kai ayta poy den metakinithikan * apo ta list1 kai list2 */ while (current1 < list1.length) temp[current3++] = list1[current1++]; while (current2 < list2.length) temp[current3++] = list2[current2++]; } public static void main(string[] args) { int[] nums = {5,2,9,3,8,4,0,1,6,7}; System.out.println("Ataxinomitos pinakas"); System.out.println(Arrays.toString(nums)); System.out.println(); mergesort(nums); System.out.println("Taxinomimenos pinakas me Merge Sort "); System.out.println(Arrays.toString(nums)); System.out.println(); } } 35

36 Ταξινόμηση με Συγχώνευση (Merge Sort) (5/7) Οι δύο ταξινομημένοι υπο-πίνακες συγχωνεύονται σε ένα ταξινομημένο πίνακα. 36

37 Ταξινόμηση με Συγχώνευση (Merge Sort) (6/7) Ανάλυση της χρονικής πολυπλοκότητας της Merge Sort (1/2) Αν T(n) συμβολίζει τον χρόνο που απαιτείται για την ταξινόμησης, με την Merge Sort, ενός πίνακα n-στοιχείων (όπου n μια δύναμη του 2), τότε ο αλγόριθμος διαιρεί τον πίνακα σε 2 υπο-πίνακες, ταξινομεί αναδρομικά τους 2 υπο-πίνακες και τους συγχωνεύει σε ένα ταξινομημένο πίνακα, άρα: Για την συγχώνευση των δύο υπο-πινάκων απαιτούνται n-1 συγκρίσεις των στοιχείων των δύο υπο-πινάκων, και n-κινήσεις για την μετακίνηση των στοιχείων στον προσωρινό πίνακα. Έτσι ο συνολικός χρόνος είναι 2n-1, και η χρονική πολυπλοκότητα: 37

38 Ταξινόμηση με Συγχώνευση (Merge Sort) (7/7) Ανάλυση της χρονικής πολυπλοκότητας της Merge Sort (2/2) - ο πίνακας μοιράζεται σε: n, n/2, n/4,, 2, 1 - γραμμικός χρόνος Ο(n) σε κάθε επίπεδο της συγχώνευσης. - χρειάζεται βοηθητικός πίνακας που μπορεί να είναι ο ίδιος σε όλες τις αναδρομικές κλήσεις. - σε επίπεδο ενός στοιχείου σταματά η αναδρομή και αρχίζει η συγχώνευση. Με συνολική χρονική πολυπλοκότητα O(n log n), η Merge Sort είναι καλύτερη από τις selection sort, insertion sort, και bubble sort που έχουν χρονική πολυπλοκότητα της τάξης O(n 2 ). Μειονέκτημα η χρήση βοηθητικού πίνακα. Η μέθοδος sort της κλάσης java.util.arrays υλοποιείται με τoν αλγόριθμο Merge Sort. 38

39 Σύγκριση Πολυπλοκότητας Αλγορίθμων Ταξινόμησης Ταξινόμηση Μέση Περίπτωση Καλύτερη Περίπτωση Χειρότερη Περίπτωση Bubble Sort O(n 2 ) O(n 2 ) O(n 2 ) Selection Sort O(n 2 ) O(n 2 ) O(n 2 ) Insertion Sort O(n 2 ) O(n) O(n 2 ) Quick Sort O(n*log(n)) O(n*log(n)) O(n 2 ) Merge Sort O(n*log(n)) O(n*log(n)) O(n*log(n)) Όπου: 39

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

Διαβάστε περισσότερα

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 }

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 } ΤΑΞΙΝΟΜΗΣΗ- ΑΣΚΗΣΕΙΣ Οι μέθοδοι ταξινόμησης INSERTION, SELECTION και BUBBLE SORT με την ολοκλήρωσή τους θα έχουν σε κάθε θέση του πίνακα το σωστό στοιχείο x (ταξινόμηση με αύξουσα σειρά δηλ. στην θέση

Διαβάστε περισσότερα

Αλγόριθμοι ταξινόμησης

Αλγόριθμοι ταξινόμησης Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης BuubleSort, SelectionSort, InsertionSort, Merger Sort, Quick Soft ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 9 ο Ταξινόµηση Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ταξινόµηση Εισαγωγή Selection sort Insertion sort Bubble sort

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 20: Αλγόριθμοι ΤαξινόμησηςIII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Ε. QuickSort Γρήγορη Ταξινόμηση - Έμμεση Ταξινόμηση - Εξωτερική Ταξινόμηση Διδάσκων:

Διαβάστε περισσότερα

Τεχνικές και Αλγόριθμοι Ταξινόμησης

Τεχνικές και Αλγόριθμοι Ταξινόμησης ΑΛΕΞΑΝΔΡΕΙΟ ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Προγραμματισμός Η/Υ ΙΙ (http://www.it.teithe.gr/~adamidis/prog_ii.html) Τεχνικές και Αλγόριθμοι Ταξινόμησης Παναγιώτης Αδαμίδης Email: adamidis@it.teithe.gr

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II

Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 10: Αλγόριθμοι Ταξινόμησης II Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Δ. QuickSort Γρήγορη Ταξινόμηση Ε. BucketSort

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Διάλεξη 13: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης SelectionSort, InsertionSort, Στις ερχόμενες διαλέξεις θα δούμε τους αλγόριθμους Mergesort,

Διαβάστε περισσότερα

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

Διαβάστε περισσότερα

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Γ. MergeSort Ταξινόμηση με Συγχώνευση Δ. BucketSort Ταξινόμηση με Κάδους Διδάσκων:

Διαβάστε περισσότερα

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι Πρόβλημα Ταξινόμησης Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Είσοδος : ακολουθία n αριθμών (α 1, α 2,..., α n

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

Διαβάστε περισσότερα

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 7 η Βασίλης Στεφανής Αλγόριθμοι ταξινόμησης Στην προηγούμενη διάλεξη είδαμε: Binary search Λειτουργεί μόνο σε ταξινομημένους πίνακες Πώς τους ταξινομούμε? Πολλοί τρόποι. Ενδεικτικά:

Διαβάστε περισσότερα

Ταξινόμηση. Σαλτογιάννη Αθανασία

Ταξινόμηση. Σαλτογιάννη Αθανασία Ταξινόμηση Σαλτογιάννη Αθανασία Ταξινόμηση Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ποια είδη αλγορίθμων ταξινόμησης υπάρχουν; Ταξινόμηση Τι εννοούμε όταν

Διαβάστε περισσότερα

Ταξινόμηση με συγχώνευση Merge Sort

Ταξινόμηση με συγχώνευση Merge Sort Ταξινόμηση με συγχώνευση Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Πληροφορικής 1 Διαίρει και Βασίλευε Η μέθοδος του «Διαίρει και Βασίλευε» είναι μια γενική αρχή σχεδιασμού αλγορίθμων

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση

Διαβάστε περισσότερα

Αλγόριθµοι Ταξινόµησης

Αλγόριθµοι Ταξινόµησης Αλγόριθµοι Ταξινόµησης Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οι αλγόριθµοι ταξινόµησης SelectionSort, InsertionSort, Mergesort, QuickSort, BucketSort Κάτω φράγµα της αποδοτικότητας

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 2

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

Διαβάστε περισσότερα

p

p ΑΝΑ ΡΟΜΙΚΗ ΤΑΞΙΝΟΜΗΣΗ- ΑΣΚΗΣΕΙΣ Οι μέθοδοι ταξινόμησης QUICK SORT και MERGE SORT κωδικοποιούνται εύκολα αναδρομικά Oι δυο αναδροµικοί µέθοδοι δέχονται 1ο όρισµα τον πίνακα, και δεν επιστρέφουν τίποτα.

Διαβάστε περισσότερα

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση Διάλεξη 17η: Ταξινόμηση και Αναζήτηση Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 1 / 10 Το πρόβλημα της Αναζήτησης

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Quicksort Κεφάλαιο 7. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Quicksort Κεφάλαιο 7. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Quicksort Κεφάλαιο 7 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Quicksort Ο βασικός αλγόριθµος Χαρακτηριστικά επιδόσεων Μικροί υποπίνακες Μη αναδροµική υλοποίηση Δοµές Δεδοµένων

Διαβάστε περισσότερα

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων ΕΠΛ31 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

Διαβάστε περισσότερα

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης: Α. SelectoSort Ταξινόμηση με Επιλογή Β. IsertoSort Ταξινόμηση με Εισαγωγή Γ. MergeSort

Διαβάστε περισσότερα

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1 Ταξινόμηση Παύλος Εφραιμίδης Δομές Δεδομένων Ταξινόμηση 1 Το πρόβλημα της ταξινόμησης Δομές Δεδομένων Ταξινόμηση 2 Ταξινόμηση Δίνεται πολυ-σύνολο Σ με στοιχεία από κάποιο σύμπαν U (πχ. U = το σύνολο των

Διαβάστε περισσότερα

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016 ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016 Αναζήτηση και Ταξινόμηση Βασικές λειτουργίες σε προγράμματα Αναζήτηση (searching): Βρες ένα ζητούμενο στοιχείο σε μια

Διαβάστε περισσότερα

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης Γ7.5 Αλγόριθμοι Αναζήτησης Γ Λυκείου Κατεύθυνσης Εισαγωγή Αλγόριθμος αναζήτησης θεωρείται ένας αλγόριθμος, ο οποίος προσπαθεί να εντοπίσει ένα στοιχείο με συγκεκριμένες ιδιότητες, μέσα σε μία συλλογή από

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης

Διάλεξη 04: Παραδείγματα Ανάλυσης Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα

Διαβάστε περισσότερα

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων Ταξινόμηση: Εισαγωγικά Ταξινόμηση (Sor ng) Ορέστης Τελέλης Βασικό πρόβλημα για την Επιστήμη των Υπολογιστών. π.χ. αλφαβητική σειρά, πωλήσεις ανά τιμή, πόλεις με βάση πληθυσμό, Μπορεί να είναι ένα πρώτο

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Σταύρος Δ. Νικολόπουλος 06-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ταξινόμηση Selection-Sort Bubble-Sort και

Διαβάστε περισσότερα

Αλγόριθµοι Ταξινόµησης

Αλγόριθµοι Ταξινόµησης Αλγόριθµοι Ταξινόµησης Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οι αλγόριθµοι ταξινόµησης SelectionSort, InsertionSort, Mergesort, QuickSort, BucketSort Κάτω φράγµα της αποδοτικότητας

Διαβάστε περισσότερα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Γιάννης Κουτσονίκος Επίκουρος Καθηγητής Οργάνωση Δεδομένων Δομή Δεδομένων: τεχνική οργάνωσης των δεδομένων με σκοπό την

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/~gounaris/courses/ad auth gounaris/courses/ad 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο

Διαβάστε περισσότερα

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014 ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014 Αναζήτηση και Ταξινόµηση Βασικές λειτουργίες σε προγράµµατα Αναζήτηση (searching): Βρες ένα ζητούµενο στοιχείο σε µια

Διαβάστε περισσότερα

Προχωρημένες έννοιες προγραμματισμού σε C

Προχωρημένες έννοιες προγραμματισμού σε C Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Ταξινόμηση Πίνακα Αναζήτηση σε Ταξινομημένο Πίνακα Πρόβλημα Δίνεται πίνακας t από Ν ακεραίους. Ζητούμενο: να ταξινομηθούν τα περιεχόμενα του πίνακα σε αύξουσα αριθμητική

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος. sfetsos@it.teithe.gr

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος. sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Π ί ν α κ ε ς - A r r a y s Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων

Διαβάστε περισσότερα

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Quicksort ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 62] Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 10: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Δ. QuickSort Γρήγορη Ταξινόμηση Ε. BucketSort Ταξινόμηση με Κάδους - Έμμεση Ταξινόμηση

Διαβάστε περισσότερα

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Στοιχείο διαχωρισµού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες:

Διαβάστε περισσότερα

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1 Merge Sort (Ταξινόμηση με συγχώνευση) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 6/14/2007 3:04 AM Merge Sort 1 Κύρια σημεία για μελέτη Το παράδειγμα του «διαίρει και βασίλευε» ( 4.1.1) Merge-sort

Διαβάστε περισσότερα

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Quicksort ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2 Διαίρει-και-Βασίλευε Γενική µέθοδος σχεδιασµού αλγορίθµων: Διαίρεση σε ( 2) υποπροβλήµατα (σηµαντικά) µικρότερου µεγέθους.

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Ταξινόμηση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Είσοδος n αντικείμενα a 1, a 2,..., a n με κλειδιά (συνήθως σε ένα πίνακα, ή λίστα, κ.τ.λ)

Διαβάστε περισσότερα

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Διαίρει-και-Βασίλευε Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 04: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Quicksort Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 6] Στοιχείο διαχωρισμού (pivot),

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Μ έ θ ο δ ο ι Οι μέθοδοι είναι εκείνα τα τμήματα του κώδικα όπου εκτελούνται οι ουσιαστικές

Διαβάστε περισσότερα

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

Διαβάστε περισσότερα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Mergesort Κεφάλαιο 8 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική ταξινόµηση

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

Διαβάστε περισσότερα

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος

Διαβάστε περισσότερα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Προγραμματισμός Ι Ενότητα 8 : Πίνακες IΙ Αλέξανδρος Τζάλλας 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής Τ.Ε

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές Δεδομένων Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

ΗΥ-150. Ταξινόµηση και Αναζήτηση

ΗΥ-150. Ταξινόµηση και Αναζήτηση ΗΥ-150 Ταξινόµηση και Αναζήτηση To πρόβληµα της Αναζήτησης οθέντος δεδοµένων, λ.χ. σε Πίνακα (P) Ψάχνω να βρω κάποιο συγκεκριµένο στοιχείο (key) Αν ο πίνακας δεν είναι ταξινοµηµένος Γραµµική Αναζήτηση

Διαβάστε περισσότερα

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1 Ο αλγόριθμος Quick-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 6/14/2007 3:42 AM Quick-Sort 1 Κύρια σημεία για μελέτη Quick-sort ( 4.3) Αλγόριθμος Partition step Δέντρο Quick-sort Παράδειγμα εκτέλεσης

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: ΠαραδείγματαΑνάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, παραδείγματα -Γραμμική

Διαβάστε περισσότερα

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η διαδικασία PercolateDown, Δημιουργία Σωρού O Αλγόριθμος Ταξινόμησης HeapSort Υλοποίηση, Παραδείγματα

Διαβάστε περισσότερα

Generics και ArrayLists

Generics και ArrayLists ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Generics και ArrayLists Προσοχή!!! Να εκτελεστούν πρώτα όλες οι ασκήσεις τις Θεωρίας

Διαβάστε περισσότερα

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ιαίρει-και-βασίλευε Γενική μέθοδος σχεδιασμού αλγορίθμων: ιαίρεση σε ( 2) υποπροβλήματα

Διαβάστε περισσότερα

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Επιλογή Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Πρόβλημα Επιλογής Πίνακας Α[ ] με n στοιχεία (όχι ταξινομημένος). Αριθμός k,

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φ Ρ Ο Ν Τ Ι Σ Τ Η Ρ Ι Ο 1 : ΤΑΞΙΝΟΜΗΣΗ Δ Ρ Ι Τ Σ Α Σ Η Λ Ι Α Σ Υ Π Ο Ψ Η Φ Ι Ο Σ Δ Ι Δ Α Κ Τ Ο Ρ Α Σ ΤΟ ΠΡΟΒΛΗΜΑ ΤΗΣ ΤΑΞΙΝΟΜΗΣΗΣ Ορισμός ταξινόμησης 2 Κατηγορίες αλγορίθμων ταξινόμησης

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης Δοµές Δεδοµένων 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι Ε. Μαρκάκης Περίληψη Bubble Sort Selection Sort Insertion Sort Χαρακτηριστικά επιδόσεων Shellsort Ταξινόµηση συνδεδεµένων λιστών Δοµές Δεδοµένων

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Αναζήτηση και ταξινόµηση 7 Αναζήτηση (search) Πρόβληµα: αναζήτηση της καταχώρησης key στη

Διαβάστε περισσότερα

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με

Διαβάστε περισσότερα

242 -ΕισαγωγήστουςΗ/Υ

242 -ΕισαγωγήστουςΗ/Υ 1 242 -ΕισαγωγήστουςΗ/Υ ΤµήµαΜαθηµατικών, Πανεπιστήµιο Ιωαννίνων Άρτια Α.Μ. (0-2-4-6-8) 2 ήλωση: Πίνακες στην ΕΑΓ δηλωση ( [1 : 1, 1 : 2,..., 1: ν ] ) παραταξη ; Π.χ.: δηλωση

Διαβάστε περισσότερα

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 8 Quick Sort 1 / 11 Ο αλγόριθμος QuickSort 1 Προτάθηκε από τον CAR (Tony) Hoare το 1961 2 Ο αλγόριθμος

Διαβάστε περισσότερα

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Επιλογή ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Πρόβλημα Επιλογής Πίνακας Α[]με n στοιχεία (όχι ταξινομημένος). Αριθμός k, 1 k n. Υπολογισμός

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα

Ταχεία Ταξινόμηση Quick-Sort

Ταχεία Ταξινόμηση Quick-Sort Ταχεία Ταξινόμηση Quc-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1 Outlne Quc-sort Αλγόριθμος Βήμα διαχωρισμού Δένδρο Quc-sort

Διαβάστε περισσότερα

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Επιλογή ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort 1, c 3, a 3, b 7, d 7, g 7, e B 0 1 3 4 5 6 7 8 9 1 BucketSort (Ταξινόμηση Κάδου) - Αρχικά θεωρείται ένα κριτήριο κατανομής με βάση το οποίο

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό

Διαβάστε περισσότερα

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3.0 Σταύρος Δ. Νικολόπουλος 0-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Διαίρει και Βασίλευε Quick-sort και Merge-sort

Διαβάστε περισσότερα

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Αναζήτηση. Σειριακή αναζήτηση. Δυαδική Αναζήτηση Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Παραδοχή Στη συνέχεια των διαφανειών (διαλέξεων) η ασυμπτωτική έκφραση (συμβολισμός Ο, Ω, Θ) του χρόνου

Διαβάστε περισσότερα

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρόβλημα Επιλογής Πίνακας Α[]με n στοιχεία (όχι ταξινομημένος). Αριθμός

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Συνέχεια για το for: ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Nested for-loops (for μέσα σε for): π.χ. int k; for (int i=0; i

Διαβάστε περισσότερα

Δομές δεδομένων (2) Αλγόριθμοι

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

Διαβάστε περισσότερα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. Διάλεξη : Παραδείγματα Ανάλυσης Πολυπλοκότητας / Ανάλυση Αναδρομικών Αλγόριθμων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Παραδείγματα Ανάλυσης Πολυπλοκότητας : Μέθοδοι, 6 παραδείγματα

Διαβάστε περισσότερα

ΣΧΟΛΙΑ 1 ΗΣ ΕΡΓΑΣΙΑΣ. 15 Μαΐου 2013

ΣΧΟΛΙΑ 1 ΗΣ ΕΡΓΑΣΙΑΣ. 15 Μαΐου 2013 ΣΧΟΛΙΑ 1 ΗΣ ΕΡΓΑΣΙΑΣ Σχεδίαση Αλγορίθμων 15 Μαΐου 2013 Ζητούμενα Υλοποίηση Ταξινόμησης με Συγχώνευση (Mergesort) Αναδρομική (Recursive) εκδοχή Επαναληπτική (Iterative) εκδοχή Καταμέτρηση αντιστροφών Για

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

Εργαστήριο 2: Πίνακες

Εργαστήριο 2: Πίνακες Εργαστήριο 2: Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Επεξεργασία Πινάκων - Υλοποίηση της Δυαδικής Αναζήτησης σε πίνακες - Υλοποίηση της Ταξινόμησης με Επιλογής σε πίνακες ΕΠΛ035

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων Κεφάλαιο 1 Εισαγωγή Περιεχόμενα 1.1 Αλγόριθμοι και Δομές Δεδομένων... 9 1.2 Διατήρηση Διατεταγμένου Συνόλου... 12 1.3 Ολοκληρωμένη Υλοποίηση σε Java... 15 Ασκήσεις... 18 Βιβλιογραφία... 19 1.1 Αλγόριθμοι

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΕΥΡΕΣΗ ΜΕΓΑΛΥΤΕΡΟΥ/ΜΙΚΡΟΤΕΡΟΥ ΣΤΟΙΧΕΙΟΥ ΜΟΝΟΔΙΑΣΤΑΤΟΥ -1 Ολα τα στοιχεία του πίνακα είναι διαφορετικά μεταξύ τους.

Διαβάστε περισσότερα

Εισαγωγή στον δομημένο προγραμματισμό

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 5 η : Πίνακες (Προχωρημένα Θέματα) Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

Προγραμματιστικές Τεχνικές

Προγραμματιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές Τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωμύλος Κορακίτης

Διαβάστε περισσότερα

Α Ν Α Δ Ρ Ο Μ Η (R e c u r s i o n) Παναγιώτης Σφέτσος, PhD

Α Ν Α Δ Ρ Ο Μ Η (R e c u r s i o n) Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Α Ν Α Δ Ρ Ο Μ Η (R e c u r s i o n) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Το πρότυπο Αναδρομή (Recursion) Αναδρομική μέθοδος: Όταν μία μέθοδος καλεί

Διαβάστε περισσότερα