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

Σχετικά έγγραφα
Σημειώσεις δεύτερης εβδομάδας

Ανάλυση. Ο εσωτερικός ϐρόχος εκτελείται i + 1 ϕορές, για i = 0,..., n 1.

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Πολλές φορές έχουμε πολλές μεταβλητές του ίδιου τύπου που συσχετίζονται και θέλουμε να τις βάλουμε μαζί.

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Δομημένος Προγραμματισμός (ΤΛ1006)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

AVL-trees C++ implementation

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Συλλογές, Στοίβες και Ουρές

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Σημειώσεις όγδοης εβδομάδας

Μεθόδων Επίλυσης Προβλημάτων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

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

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

Διάλεξη 15: Αναδρομή (Recursion)

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

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

C: Από τη Θεωρία στην Εφαρμογή

Υπολογισμός - Εντολές Επανάληψης

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Αντικειμενοστρεφής Προγραμματισμός

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

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

Δομές ελέγχου ροής προγράμματος

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Κεφάλαιο : Επαναλήψεις (for, do-while)

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Αντικειµενοστρεφής Προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες

Εισαγωγή στον Προγραμματισμό

Είσοδος και Έξοδος. (Input and Output) Διαφάνειες από τους Robert Sedgewick και Kevin Wayne. Τι θα δούµε σήµερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

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

Στοιχειώδεις Δομές Δεδομένων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Φροντιςτήριο. Linked-List

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Εργαστήριο 7: Ο αλγόριθμος ταξινόμησης Radix Sort

Βασικές Έννοιες Δοµών Δεδοµένων

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

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα)

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

Διάλεξη 15: Αναδρομή (Recursion)

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

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

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

ΕΠΛ131 Αρχές Προγραμματισμού

Υπολογισμός - Εντολές Ελέγχου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

Transcript:

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ

ΕΡΓΑΣΤΗΡΙΟ 3 Sequential & Binary Search Σειριακή & Δυαδική Αναζήτηση

Θεωρία Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 3

Έννοιες 1. Ποιοι παράγοντες επηρεάζουν τον αλγόριθμό αναζήτησης που θα επιλέξουμε 2. Πότε εφαρμόζουμε την σειριακή και πότε την δυαδική αναζήτηση Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 4

Κανόνες 1. Οι παράγοντες που επηρεάζουν τον αλγόριθμο αναζήτησης είναι: 1. Η διακριτότητα των στοιχείων του πίνακα 2. Η ταξινόμηση των στοιχείων του πίνακα 2. Η δυαδική αναζήτηση εφαρμόζεται μόνο όταν ο πίνακας είναι ταξινομημένος 3. Η σειριακή αναζήτηση εφαρμόζεται είτε ο πίνακας είναι ταξινομημένος είτε όχι 4. Προτιμάμε την σειριακή αναζήτηση όταν: 1. Ο πίνακας είναι αταξινόμητος 2. Ο πίνακας είναι μικρός 3. Η αναζήτηση γίνεται σπάνια Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 5

Pseudocode SEQUENTIAL SEARCH PSEUDOCODE while (another student in the list and student not found) if current student name in the list = new student name return found and pointer to student in list else go to next student in the list end while Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 6

Pseudocode BINARY SEARCH PSEUDOCODE Input: ordered list and element to be searched for (the search target) Output: location of search target or 0 if target is not found Algorithm binarysearch(list[], searchtarget) last <-- length(list[]) first <-- 1 // while there are still elements to be searched through while first = last do middle <-- (first + last) / 2 // if current middle value is the search target if list[middle] = searchtarget return middle // if current middle value is less than the search target else if list[middle] < searchtarget first <-- middle + 1 // if current middle value is larger than the search target else last <-- middle - 1 end if end while // return 0 if search target not found return 0 Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 7

/* * To change this template, choose Tools Templates * and open the template in the editor. */ package javaapplication3; /** * * @author Vidakis */ import java.util.arrays; import java.util.scanner; import static java.lang.math.*; public class SequentialSearchArray { public static void main(string... args) { Scanner sc = new Scanner(System.in); int j, k, number, size; boolean found = false; System.out.print("Enter the array size: "); size = sc.nextint(); int[] intarray = new int[size]; Παραδείγματα σε Java Sequential Search for (j=0; j<size; j++) intarray[j] = (int) (random()*100); System.out.println("A " + size + " element int array of random " + "ints between 0 and 99 has been loaded."); System.out.print("Guess one of the numbers: "); number = sc.nextint(); k=0; while (!found && k<size) if (intarray[k]==number) found=true; else k +=1; System.out.println(); if (found) System.out.println("Found in position " + k); else System.out.println("The number is not found"); System.out.println("\nThe random array for verification is:\n"); System.out.println(Arrays.toString(intArray)); Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 8

/* * To change this template, choose Tools Templates * and open the template in the editor. */ package javaapplication3; /** * * @author Vidakis */ public class BinarySearchArray { private long[] a; private int nelems; Παραδείγματα σε Java Binary Search private int recfind(long searchkey, int lowerbound, int upperbound) { int curin; curin = (lowerbound + upperbound) / 2; if (a[curin] == searchkey) return curin; // found it else if (lowerbound > upperbound) return nelems; // can't find it else // divide range { if (a[curin] < searchkey) // in upper half return recfind(searchkey, curin + 1, upperbound); else // in lower half return recfind(searchkey, lowerbound, curin - 1); public BinarySearchArray(int max) { a = new long[max]; // create array nelems = 0; public int size() { return nelems; public int find(long searchkey) { return recfind(searchkey, 0, nelems - 1); public void insert(long value) { int j; for (j = 0; j < nelems; j++) // find where it goes if (a[j] > value) // (linear search) break; for (int k = nelems; k > j; k--) // move bigger ones up a[k] = a[k - 1]; a[j] = value; // insert it nelems++; // increment size Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 9

Παραδείγματα σε Java Binary Search public void display() { for (int j = 0; j < nelems; j++) System.out.print(a[j] + " "); System.out.println(""); public static void main(string[] args) { int maxsize = 100; BinarySearchArray arr = new BinarySearchArray(maxSize); arr.insert(12); arr.insert(20); arr.insert(35); arr.insert(426); arr.insert(54); arr.insert(69); arr.insert(744); arr.insert(87); arr.insert(895); arr.insert(89); arr.insert(8); arr.insert(208); arr.insert(4); arr.insert(617); arr.insert(83); arr.insert(96); arr.display(); // display array int searchkey = 54; // search for item if (arr.find(searchkey)!= arr.size()) System.out.println("Found " + searchkey); else System.out.println("Can't find " + searchkey); Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 10

Παραδείγματα σε C Sequential Search #include<stdio.h> main() { int a[10],i,n,m,c=0; printf("enter the size of an array: "); scanf("%d",&n); printf("enter the elements of the array: "); for(i=0;i<=n-1;i++){ scanf("%d",&a[i]); printf("enter the number to be search: "); scanf("%d",&m); for(i=0;i<=n-1;i++){ if(a[i]==m){ c=1; break; if(c==0) printf("the number is not in the list"); else printf("the number is found"); Copyrights: http://wiki.answers.com/q/sequential_search_program_in_c Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 11

Παραδείγματα σε C Binary Search #include <stdio.h> main() { int n, a[30], item, i, j, mid, top, bottom; printf("enter how many elements you want:\n"); scanf("%d", &n); printf("enter the %d elements in ascending order\n", n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); printf("\nenter the item to search\n"); scanf("%d", &item); bottom = 1; top = n; do { mid = (bottom + top) / 2; if (item < a[mid]) top = mid - 1; else if (item > a[mid]) bottom = mid + 1; while (item!= a[mid] && bottom <= top); if (item == a[mid]) { printf("binary search successfull!!\n"); printf("\n %d found in position: %d\n", item, mid + 1); else { printf("\n Search failed\n %d not found\n", item); Copyrights: http://www.c-program-example.com/2011/09/c-program-forbinary-search.html Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 12

Ασκήσεις για Java Αλλάξτε τον κώδικα του sequential array έτσι ώστε να δημιουργείται ένα array για το αποτέλεσμα του search στο οποίο να καταχωρείτε: Την ελάχιστη τιμή του intarray, Την μέγιστη τιμή του intarray, Και το αποτέλεσμα του search. Αλλάξτε τον κώδικα του binary array έτσι ώστε να: παίρνει την τιμή του search από το πληκτρολόγιο, Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 13

Ασκήσεις για C Αλλάξτε τον κώδικα του sequential array έτσι ώστε να δημιουργείται ένας πίνακας result για τα αποτελέσματα του search. Εντοπίστε (α) την ελάχιστη τιμή, (β) την μέγιστη τιμή και (γ) έναν τυχαίο αριθμό τον οποίο θα δίνετε από το πληκτρολόγιο. Στο πίνακα result θα καταχωρείτε: Την ελάχιστη τιμή του πίνακα a Την θέση της ελάχιστης τιμής του πίνακα a Την μέγιστη τιμή του πίνακα a Την θέση της μέγιστης τιμής του πίνακα a Την θέση του τυχαίου αριθμού ανίχνευσης ή NULL ένα δεν τον βρείτε Τα στοιχεία του πίνακα που θα χρησιμοποιήσετε θα είναι τυχαία και θα τα εισάγετε από το πληκτρολόγιο όπως σας παραπέμπει ο κώδικας. Κατά την διαδικασία debugging του κώδικα σας καλό είναι να εισάγετε το ίδιο σύνολο αριθμών. Θεωρήστε ως δεδομένα στο Binary Search τα παρακάτω: (1 3 7 8 11 16 21 25) Αν αναζητήσουμε την τιμή 3, πόσες φορές θα εκτελεστεί ο αλγόριθμος; Εξηγήστε αναλυτικά Εάν αντιστρέψουμε την ταξινόμηση των δεδομένων ( 25 21 16 11 8 7 3 1) και αναζητήσουμε την τιμή 3, πόσες φορές θα εκτελεστεί ο αλγόριθμος τώρα; Εξηγήστε αναλυτικά Μάθημα: Δομές Δεδομένων & Αλγόριθμοι (Εργαστήριο) Καθηγητής: Δρ. Βιδάκης Νίκος Slide 14