Σημειώσεις δεύτερης εβδομάδας

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

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

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

Διάλεξη 11η: Δείκτες, μέρος 1

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

Ταξινόµηση και Αναζήτηση

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

ΗΥ-150. Προγραμματισμός

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

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

Διάλεξη 12η: Δείκτες, μέρος 2

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

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17)

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

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

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

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

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

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

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

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

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

Κεφάλαιο 8.6. Πίνακες ΙI ( ιάλεξη 16) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Διάλεξη 10η: Πολυδιάστατοι Πίνακες

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

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

Δομημένος Προγραμματισμός

Σημειώσεις ένατης εβδομάδας

Η βασική συνάρτηση προγράμματος main()

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

ΗΥ-150. Προγραμματισμός

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

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

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δείκτες (Pointers) (1/2) ΗΥ150 Προγραμματισμός

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Σημειώσεις έκτης και έβδομης εβδομάδας

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

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

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Δείκτες στην C (επανάληψη)

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

Διάλεξη 9η: Πίνακες (arrays)

Η γλώσσα προγραμματισμού C

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

Ηβασικήσυνάρτηση προγράμματος main()

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Διάλεξη 6: Δείκτες και Πίνακες

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

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

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

i : 0<=i<N-1 => data[i] <= data[i+1] 25/10/2009

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

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

ΠΙ Ν Α Κ Ε Σ (arrays)

Η γλώσσα προγραμματισμού C

Να εκτυπωθούν οι πρώτες Ν σειρές του τριγώνου, χρησιµοποιώντας ένα πίνακα µεγέθους Ν στοιχείων (η Ν-οστή σειρά περιέχει Ν στοιχεία).

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

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

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

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

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

Η γλώσσα προγραμματισμού C

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

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

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

Transcript:

Σημειώσεις δεύτερης εβδομάδας 1. Δυαδική αναζήτηση: /* BINARY SEARCH */ /* use sorted input */ #include <stdio.h> int main() { int c, first, last, middle, n, search, array[100]; printf("enter number of elements\n"); scanf("%d",&n); printf("enter %d integers\n", n); for ( c = 0 ; c < n ; c++ ) scanf("%d",&array[c]); printf("enter value to find\n"); scanf("%d",&search); first = 0; last = n 1; middle = (first+last)/2; while(first<=last) { if(array[middle]<search) first = middle + 1; else if(array[middle]==search) { printf("%d found at location %d.\n", search, middle+1); break; else last = middle 1; middle = (first + last)/2; if(first>last) printf("not found! %d is not present in the list.\n", search); return 0; Σημειώσεις Εργαστηρίου Δομών και Αλγορίθμων 1 costis@teicrete.gr

2. Ταξινόμηση με φυσαλίδα: #include <stdio.h> #define SIZE 10 int main(void) { int a[size] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 ; printf( "Data items in original order\n" ); for(i=0;i<size;i++) printf("%4d",a[i]); for (pass=1; pass<size;pass++) for (i=0;i<size 1;i++) if(a[i]>a[i+1]) { hold=a[i]; a[i]=a[i+1]; a[i+1]=hold; printf("\ndata items in ascending order\n"); for (i=0;i<size;i++) printf("%4d",a[i]); printf("\n"); return 0; Πρώτη Εργασία για το σπίτι: 1. Να αντικατασταθούν οι τρεις γραμμές του κώδικα της εσωτερικής επανάληψης του αλγόριθμου φυσαλίδας που αντιμεταθέτουν το περιεχόμενα από δύο κελιά του πίνακα, με κλήση συνάρτησης swap. 2. Αφού διαβάσετε στις σημειώσεις της Θεωρίας του κύριου Ξεζωνάκη τους δύο τρόπους με τους οποίους περνάμε πίνακα σε συνάρτηση στη γλώσσα C, επιλέξτε έναν και μετατρέψετε τον αλγόριθμο ταξινόμησης σε συνάρτηση. 3. Να τροποποιήσετε την δυαδική αναζήτηση έτσι, ώστε: α. να επιτρέπει πολλαπλές αναζητήσεις στον πίνακα και να σταματάει όταν ζητήσουμε το 0. β. να ελέγχει αν ο πίνακας τιμών που δώσαμε είναι ταξινομημένος ήδη ή όχι και αν όχι να καλεί την συνάρτηση ταξινόμησης που κατασκευάσατε στην ερώτηση 2. Σημειώσεις Εργαστηρίου Δομών και Αλγορίθμων 2 costis@teicrete.gr

Για όποιον προτιμά να χρησιμοποιήσει Java: 1. Binary Search σε Java: import java.util.scanner; public class BinarySearch { int c, first, last, middle, n, search; int[] array; array=new int[100]; System.out.println("Enter number of elements"); Scanner sc = new Scanner(System.in); n = sc.nextint(); System.out.printf("Enter %d integers\n", n); for (c = 0; c < n; c++) array[c] = sc.nextint(); System.out.println("Enter value to find"); search = sc.nextint(); first = 0; last = n 1; middle = (first + last) / 2; while (first <= last) { if (array[middle] < search) first = middle + 1; else if (array[middle] == search) { System.out.printf("%d found at location %d.\n", search, middle + 1); break; else last = middle 1; middle = (first + last) / 2; if (first > last) System.out.printf("Not found! %d is not present in the list.\n", search); Σημειώσεις Εργαστηρίου Δομών και Αλγορίθμων 3 costis@teicrete.gr

2. Bubble Sort χωρίς μέθοδο swap σε Java: public class Bubblesort { int[] a = {2, 6, 4, 8, 10, 12, 89, 68, 45, 37; System.out.println("Data items in original order\n"); for (pass = 1; pass < SIZE; pass++) { for (i = 0; i < SIZE 1; i++) { if (a[i] > a[i + 1]) { hold = a[i]; a[i] = a[i + 1]; a[i + 1] = hold; 3. Bubble Sort με μέθοδο swap σε Java: public class Bubblesort1 { int[] a = {2, 6, 4, 8, 10, 12, 89, 68, 45, 37; System.out.println("Data items in original order"); for (pass = 1; pass < SIZE; pass++) for (i = 0; i < SIZE 1; i++) if (a[i] > a[i + 1]) swap(a,i,i+1); // ARRAYS PASS BY REFERENCE static void swap(int arr[], int a, int b) { hold=arr[a]; arr[a]=arr[b]; arr[b]=hold; Σημειώσεις Εργαστηρίου Δομών και Αλγορίθμων 4 costis@teicrete.gr

4. Η Java έχει βέβαια και έτοιμη Array.sort() μέθοδο. (Για την άσκηση δεν πρέπει να χρησιμοποιηθεί) import java.util.arrays; public class AutoSort { int[] a = {2, 6, 4, 8, 10, 12, 89, 68, 45, 37; System.out.println("Data items in original order\n"); { /* Java Util Arrays Sort */ Arrays.sort(a); { Σημειώσεις Εργαστηρίου Δομών και Αλγορίθμων 5 costis@teicrete.gr