Esercitazione sull’ ordinamento 20 maggio 2003

Slides:



Advertisements
Presentazioni simili
Package Utilizzo classi.
Advertisements

Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Le gerarchie di tipi.
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
1 Le gerarchie di tipi: implementazioni multiple e principio di sostituzione.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Liste Ordinate 3 Maggio Ultima Lezione Abbiamo visto i tipi di dato astratti IntList e StringList Realizzano liste di interi e di stringhe Realizzati.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
e array a più dimensioni
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Algoritmi e Strutture Dati IV. Heap e Code di Priorità
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Algoritmi di ordinamento
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Programmazione in Java Claudia Raibulet
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Astrazione procedurale ed eccezioni
Esercizi.
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
Corso JAVA Lezione n° 10 Istituto Statale di Istruzione Superiore “F. Enriques”
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
Algoritmi e Strutture Dati
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Astrazione sul controllo: gli iteratori. 2 Perché vogliamo iterarare “in modo astratto” 4 problema: iterare su tipi di dato arbitrari  esempio: procedura.
Liste di Interi Esercitazione. Una variante Liste concatenate di Integers Non modificabile Costruttori per creare la lista vuota o un nodo Metodi d’istanza.
Liste Concatenate 11 Aprile E’ una delle strutture dati fondamentali in tutti i linguaggi di programmazione di alto livello Una Lista Concatenata.
Liste di Interi Esercitazione. IntList Lista di interi Una lista è una disposizione ordinata di elementi ( non in modo crescente-descrescente, ma per.
1 Gerarchie e polimorfismo: liste. 2 Generalizzare le liste di interi  List 4 lista di oggetti –non modificabile 4 vorremo poi definire un sottotipo.
Esercitazione Object, Vettori, Liste. Ereditarieta’ Abbiamo visto come tramite l’ereditarieta’ e’ possibile estendere classi esistenti -arricchendo lo.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
LIP: 9 Maggio Esercizi Riprendiamo un esercizio proposto Definire un tipo di dato Persona che definisce oggetti che rappresentano le informazioni.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
LIP: 8 Marzo 2005 Vettori. Abbiamo visto L’uso di Vector come alternativa all’uso di arrays Rivediamo l’esercizio dell’altra volta.
LIP: 22 Marzo 2005 Eccezioni. Eccezioni-Richiami Come si definiscono eccezioni Come si lanciano Come si gestiscono (gestione esplicita o di default)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Esercitazione. Problema Vogliamo definire in modo gerachico un tipo di dato che definisce Tabelle multi-dimensionali con un numero di righe variabili.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Esercitazione 14 Marzo Esercizio dell’altra volta Definire un tipo di dato Abbonato i cui oggetti descrivono le informazioni relative ad un abbonato.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Liste Concatenate 28 Marzo Avviso Martedi’ 4 Aprile: Verifica di LIP Per iscriversi (obbligatorio) inviare un e- mail entro venerdi’ 31 Marzo a.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
LIP: 18 Aprile 2008 Interfacce. Rappresentazione Lista val next vuota Lista vuota: any true Lista non vuota: any true 154 false 24 false.
ESERCITAZIONE Problema Scrivere una funzione che scambi due interi non opera su oggetti  funzione statica scritta dentro a una classe contenitore.
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Esercitazione sull’ ordinamento 20 maggio

Tipi Wrapper semplici / 1 I tipi semplici, come int e char, non fanno parte della gerarchia degli oggetti; vengono passati per valore e non possono essere passati per riferimento. Alcune classi gestiscono solo oggetti (Vector): abbiamo bisogno di una rappresentazione oggetto dei tipi semplici

Tipi Wrapper semplici /2 Java offre classi che corrispondono a ciascuno dei tipi semplici. In pratica, queste classi incapsulano (wrap), i tipi semplici all’interno di una classe. Tali classi sono definite all’interno di java.lang.

Number La classe astratta Number è la superclasse delle classi BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, and Short. Le sottoclasse di Number devono fornire metodi per convertire il valore del tipo numerico rappresentato in byte, double, float, int, long, e short.

Integer /1 La classe Integer incapsula il valore del tipo primitivo int in un oggetto. Un oggetto di tipo Integer contiene un unico campo il cui tipo è int. Costruttori Integer(int value) Integer(String s)

Integer /2 Acuni metodi: byte byteValue() int intValue(); long longValue(); String toString(); Metodi simili per le classi Float, Double e Long. Esistono wrapper anche per le classi char e boolean

Il nostro wrapper: BaseObject / 1 // Wrapper class for use with generic data structures. public class BaseObject implements Comparable { private int key; public BaseObject(int k) { this.setKey(k); } public void setKey(int k) { key = k; } public int intValue(){ return key; }

Il nostro wrapper: BaseObject / 2 public int compareTo(Object bo) { if(!(bo instanceof BaseObject)) throw new ClassCastException(); if(this.key == ((BaseObject)bo).key) return 0; else if(this.key < ((BaseObject)bo).key) return -1; else return 1; } public String toString() { return "" + key + " "; }

Il nostro wrapper: BaseObject / 3 public void visit() { System.out.print(this.toString()); } /** * Implements the equals method. anotherBaseObject the second BaseObject. true if the objects are equal, false otherwise. ClassCastException if anotherBaseObject is not * a BaseObject. */ public boolean equals(BaseObject anotherBaseObject) { return this.key == anotherBaseObject.key; }

L’interfaccia comparable Questa interfaccia impone un ordinamento totale sugli oggetti di ciascuna classe che la implementa. Questo ordinamento viene considerato come l’ordinamento naturale della classe ed il metodo compareTo definisce il metodo di confronto. I wrapper di tipi numerici in Java implementano l’interfaccia Comparable. Anche BaseObject!

La classe java.util.Random La classe Random è un generatore di numeri pseudo- casuali, così definiti perché non sono altro che sequenze uniformemente distribuite. Definisce i seguenti costruttori: Random(): crea un generatore di numeri casuali. Il suo seme è inizializzato con un valore basato sul tempo corrente: System.currentTimeMillis() Random (long seme): crea un generatore di numeri casuali usando il seme dichiarato. Metodi: int nextInt(int n):Restituisce un valore intero uniformemente distribuito tra 0 (incluso) e lo specificato valore n (escluso), a partire dalla sequenza random corrente.

Selection Sort Si cerca il valore più basso e si mette in prima posizione. Si prosegue sui rimanenti elementi in maniera iterativa. Costo = Numero scambi: Caso peggiore (elemento maggiore in prima posizione resto del vettore ordinato): N_swap = 3 (n-1) Caso migliore (vettore ordinato): N_swap = 0

Insertion Sort /1 Inserisce l’elemento A[i] nella posizione corretta nel vettore ordinato A[0,…,i-1] Costo = numero confronti Caso peggiore (ordine inverso): Costo = n (n-1) /2 = O(n 2 ) Caso migliore (ordinato): Costo = (n-1) Caso medio: Costo = (n 2 + n - 2)/4

Insertion Sort /2 Numero totale di spostamenti: Caso peggiore (ordine inverso): N_swap = (n 2 + 3n - 4)/2 Caso migliore (ordinato): N_swap = 2(n-1) Caso medio: N_swap = (n 2 + 5n - 6)/4

Quick Sort Si divide ricorsivamente l’array in due parti, tenendo conto del valore del pivot Il costo viene valutato in base al numero di confronti: Caso peggiore: costo = O(n 2 ) Caso migliore: costo =O (n log n)

Testo Esercizio /1 Si confrontino sulle stesse istanze di ingresso le esecuzioni dei seguenti algoritmi di sorting: Selection Sort; Insertion Sort; Quick Sort; Modificare il codice Java, visto a lezione, in modo da tener traccia del numero di confronti eseguiti in ciascuno dei metodi. Negli algoritmi Selection Sort e Insertion Sort si contino anche il numero di swap eseguiti.

Testo Esercizio /2 Testare le prestazioni sulle seguenti istanze di input: Vettore di interi generati in maniera casuale; Vettore di interi ordinato in modo decrescente; Vettore di interi ordinato in modo crescente.

Testo Esercizio/3 Scrivere un metodo public static int quicksort2(Comparable[] data, int first, int last) che differisce da quicksort perché il pivot è l’elemento in prima posizione Scrivere di conseguenza un metodo public static void quicksort2(Comparable[] data) che sostituisce public static void quicksort(Comparable[] data)