Il problema dell'ordinamento. Algoritmi e Laboratorio a.a Lezioni. Proprietà degli algoritmi di ordinamento: stabilità.
|
|
- Rossana Teresa Palmisano
- 4 anni fa
- Visualizzazioni
Transcript
1 Il problema dell'ordinamento Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a Lezioni prof. Elio Giovannetti Parte 22 Riassunto algoritmi di ordinamento. Ordinamento lineare. Data una sequenza (ad es. array o lista) di elementi, ordinarla rispetto ad una relazione d'ordine definita sugli elementi (di solito su un particolare campo o componente di tali elementi); ad es. ordinare un insieme di oggetti di una classe Studente rispetto al numero di matricola (costituente la chiave identificativa dell'oggetto), oppure rispetto al cognome, ecc. Gli algoritmi che risolvono tale problema, cioè gli algoritmi di ordinamento, sono classificabili secondo diversi criteri, quali la complessità asintotica oppure il fatto che godano o no di certe proprietà interessanti. Quest' opera è pubblicata sotto una Licenza Creative Commons Attribution-NonCommercial-ShareAlike /02/2007 E. Giovannetti - AlgELab Lez.22 2 Proprietà degli algoritmi di ordinamento: stabilità. Un algoritmo di ordinamento si dice stabile se non altera l'ordine relativo di oggetti distinti che sono uguali rispetto alla relazione d'ordine, ad es. l'ordine relativo di elementi con chiavi uguali. Cioè, se nella sequenza da ordinare vi sono due elementi A e B di uguali chiavi, e A si trova prima di B in tale sequenza, anche nella sequenza ordinata A deve trovarsi prima di B. Se una sequenza di elementi già ordinata secondo un certo criterio viene ordinata secondo un altro criterio per mezzo di un algoritmo stabile, elementi uguali secondo il nuovo criterio risultano ordinati secondo il precedente criterio. Esempio: Se una sequenza di persone individuate da nome e cognome è ordinata per nome, ordinandola per cognome con un algoritmo stabile si ottiene una sequenza in cui le persone dello stesso cognome sono ordinate per nome. 19/02/2007 E. Giovannetti - AlgELab Lez.22 3 Stabilità Naturalmente la stabilità non ha alcuna importanza se gli elementi coincidono con le chiavi o, più in generale, se elementi uguali rispetto alla relazione d'ordine non sono distinguibili (ad esempio un array di interi). 19/02/2007 E. Giovannetti - AlgELab Lez.22 4 Proprietà degli algoritmi di ordinamento: ordinamento sul posto (in place, in loco) Un algoritmo di ordinamento su array si dice sul posto (o in loco, o in place) se in ogni istante al più un numero costante di elementi viene memorizzato al di fuori dell'array; cioè se l'algoritmo riordina l'array senza usare un array ausiliario o comunque uno spazio proporzionale al numero di elementi. Definizione di fatto equivalente: Un algoritmo di ordinamento si dice sul posto se la sua complessità spaziale è al più O(log n). Ricorda che la complessità spaziale comprende anche lo spazio usato dallo stack. Concludendo: un algoritmo di ordinamento è sul posto se usa solo una quantità "piccola" di spazio aggiuntivo. 19/02/2007 E. Giovannetti - AlgELab Lez.22 5 Classificazione degli algoritmi di ordinamento selection sort:sul posto, anzi spazio O(1); non stabile; tempo O(n 2 ) in tutti i casi; insertion sort: sul posto, anzi spazio O(1); stabile; tempo O(n 2 ) nei casi peggiore e medio, O(n) nel caso migliore; mergesort: non sul posto, spazio O(n); stabile; tempo O(n log n) nei casi peggiore e medio; quicksort: sul posto, spazio O(log n); non stabile; tempo O(n 2 ) nel caso peggiore, O(n log n) nei casi migliore e medio; heapsort: sul posto, anzi spazio O(1); non stabile; tempo O(n log n) in tutti i casi; Nota: il mergesort è stabile purché implementato opportunamente; ne esiste anche una versione sul posto, estremamente complicata e poco usata. 19/02/2007 E. Giovannetti - AlgELab Lez
2 Esercizio 1. Spiegare perché il selection sort, il quicksort e lo heapsort non sono stabili. Spiegare perché l'insertion sort è stabile. Spiegare perché il mergesort non è sul posto, mentre tutti gli altri dell'elenco lo sono. Spiegare in che modo deve essere realizzato il mergesort affinché esso sia stabile. Algoritmi di ordinamento non basati sui confronti: ordinamento in tempo lineare. 19/02/2007 E. Giovannetti - AlgELab Lez /02/2007 E. Giovannetti - AlgELab Lez.22 8 Problema 1.1: ordinare un array di n elementi aventi chiavi intere tutte diverse comprese fra 0 e n-1. Riprendiamo un esempio illustrato nella Lezione 10, slide 3. Si vuole ordinare un array di 50 oggetti "Articolo" distinti, contenenti ciascuno un numero di codice da 0 a 49 (articoli distinti hanno codici distinti). Per farlo è sufficiente: disporre di un array ausiliario b della stessa lunghezza; percorrere l'array di partenza andando a mettere nell'array ausiliario ogni elemento al suo posto, cioè l'articolo di codice h nell'elemento b[h]; ovviamente ciò richiede un tempo Θ(n); l'ordinamento è stato effettuato senza operare nessun confronto. 19/02/2007 E. Giovannetti - AlgELab Lez.22 9 Problema 1.2: ordinare un array di n elementi aventi chiavi intere senza ripetizioni e comprese nel range m.. m+n-1 (con m intero) Vogliamo ordinare per numero di matricola un array di 1000 studenti di matricola compresa nel range (con matricole non duplicate). È sufficiente: disporre di un array ausiliario b di 1000 elementi percorrere l'array di partenza andando a mettere nell'array ausiliario ogni elemento al suo posto, cioè l'articolo di codice h nell'elemento b[h-42000]; ovviamente ciò richiede un tempo Θ(n); l'ordinamento è stato effettuato senza operare nessun confronto. 19/02/2007 E. Giovannetti - AlgELab Lez Problema 2: ordinare un array contenente la sequenza degli n interi compresi fra m ed m+n-1. Vogliamo ordinare una sequenza di 1000 elementi costituiti da interi "nudi" compresi fra e 42999, senza elementi ripetuti. Per elemento intero "nudo" intendiamo un elemento costituito da un semplice intero senza altri dati ad esso associati. Elementi di chiavi uguali sono quindi identici (indistinguibili). In tal caso non serve alcun array ausiliario, anzi non serve neppure conoscere l'array di input! Basta semplicemente riempire ordinatamente l'array con tutti i numeri compresi fra e 42999: for(int i = 0; i < 1000; i++) a[i] = i; È ovviamente T(n) = Θ(n). 19/02/2007 E. Giovannetti - AlgELab Lez Problema 3 integer sort: ordinare un array di n interi compresi nel range 0.. k-1, con possibili ripetizioni. Nota: Se è n > k, vi sono sicuramente elementi ripetuti. Anche in questo caso non serve un array ausiliario per il risultato, ma per ognuno dei k possibili valori bisogna contare il numero di volte in cui tale valore compare nell'array. Occorre quindi un array ausiliario di contatori, di lunghezza k. Si percorre una volta l'array da ordinare A, incrementando, per ogni elemento A[i], il contatore C[A[i]] corrispondente a quell'elemento. Si percorre l'array dei contatori, depositando nell'array da ordinare il numero corretto di elementi uguali a ciascuno dei k valori. 19/02/2007 E. Giovannetti - AlgELab Lez
3 Integer sort: realizzazione public static void intsort(int k, int[] a) { int[] counters = new int[k]; // contatori int n = a.length; // inizializzo a zero i contatori (in Java non necessario): for(int i=0; i < k; i++) counters[i] = 0; //se a[j] contiene il valore v, incremento il v-esimo contatore for(int j=0; j < n; j++) counters[a[j]]++; int j = 0; // per ogni valore v,... for(int v = 0; v < k; v++) { while(counters[v] > 0) { a[j] = v; j++; counters[v]--; //... metto in a tanti valori uguali a v quanti ne sono stati contati in counters[v] 19/02/2007 E. Giovannetti - AlgELab Lez Analisi Primo for (inizializzazione contatori): k passi. Secondo for (conteggio valori): n passi Terzo for con while annidato: in tutto n passi In totale si hanno quindi 2n + k iterazioni: tempo =Θ(n+k) 19/02/2007 E. Giovannetti - AlgELab Lez Problema 4: ordinare un array di n elementi aventi chiavi intere comprese nel range 0.. k-1 (le chiavi possono essere ripetute) Come nel problema 3, per ogni possibile valore j della chiave bisogna contare quanti sono nell'array di partenza gli elementi di chiave uguale a j. Poiché però ora elementi aventi chiavi uguali contengono anche altri dati (in generale distinti): un elemento non può essere messo nel suo nuova posto sovrascrivendo l'elemento ivi inizialmente presente: bisogna quindi usare un array ausiliario per il risultato; nello stesso tempo, gli elementi di ciascuna chiave j devono essere presi dall'array di partenza. L'algoritmo diventa più sofisticato (vedi slide seguente). Counting sort Ordina un array di n elementi aventi chiavi intere comprese fra 0 e k-1. Vi sono in tutto 3 arrays: a: array di input da ordinare, di dimensione n; b: array ausiliario in cui mettere il risultato, di dimensione n; c: array dei contatori, di dimensione k; static void countsort(int k, ItemWithIntKey[] a) { dove ItemWithIntKey è una classe di oggetti dotati di un metodo che restituisce una chiave di tipo intero; for(int j = 0; j < k; j++) c[j] = 0; azzero i contatori (in Java si può omettere) Il seguito della procedura può essere scritto in due versioni leggermente diverse ma equivalenti. 19/02/2007 E. Giovannetti - AlgELab Lez /02/2007 E. Giovannetti - AlgELab Lez Versione 1 Per ogni j, metto in c[j] il numero di elementi di chiave uguale a j: for(int i = 0; i < n; i++) c[a[i].key()]++; Per ogni j, calcolo e metto in c[j] il numero degli elementi di chiave < j, nel modo seguemte: INVARIANTE: totale = numero di elementi di chiave < j Poiché non esistono elementi di chiave < 0, l'inizializzazione deve essere j = 0, totale = 0: int totale = 0; for(int j = 0; j < k; j++) { int temp = c[j];temp è il numero di elem. di chiave =j c[j] = totale; totale += temp; aggiorno totale aggiungendovi il vecchio c[j] salvato in temp. 19/02/2007 E. Giovannetti - AlgELab Lez Versione 1 (continua) A questo punto, per ogni j: c[j] = numero di elementi di chiave < j = indice del posto in cui mettere il primo elemento di chiave j. Allora, per ogni elemento a[i]: prendine la chiave: j = a[i].key(); guarda qual è la posizione in cui metterlo: i' = c[j]; mettilo in tale posizione: b[i'] = a[i]; incrementa l'indice i', perché il successivo elemento di chiave j andrà messo nella posizione successiva. Concisamente: for(int i = 0; i < n; i++) { b[c[a[i].key()]] = a[i]; c[a[i].key()]++; 19/02/2007 E. Giovannetti - AlgELab Lez
4 Versione 1 (continua) Osservazioni È un algoritmo di ordinamento stabile, perché il primo degli elementi di chiave j nell'array a viene messo al primo posto fra gli elementi di chiave j nell'array b, il secondo nel secondo, e così via. L'algoritmo evidentemente può, con una banale variazione, trattare il caso in cui le chiavi sono comprese in un range di valori non iniziante da zero (cioè da m a m+k-1, con m 0) 19/02/2007 E. Giovannetti - AlgELab Lez Versione 2 per ogni j, metto in c[j] il numero di elementi di chiave uguale a j: for(int i = 0; i < n; i++) c[a[i].key()]++; faccio diventare c[0] l'indice a cui mettere l'ultimo elemento di chiave 0: c[0]--; faccio diventare c[j] l'indice a cui mettere l'ultimo elemento di chiave j: for(int j = 1; j < k; j++) c[j] += c[j-1]; a questo punto si ha, per ogni j: c[j] new = c[0] old + c[1] old c[j] old = = indice del posto in cui mettere l'ultimo elemento di chiave j; per ottenere un ordinamento stabile bisogna percorrere l'array di input dalla fine verso l'inizio: for(int i = n-1; i >= 0; i--) { b[c[a[i].key()]] = a[i]; c[a[i].key()]--; Alla fine di entrambe le versioni si può ricopiare l'array ausiliario b nell'array di partenza a, in modo che la procedura abbia la forma e funzionalità usuali delle procedure di ordinamento. 19/02/2007 E. Giovannetti - AlgELab Lez Complessità (per entrambe le versioni) Complessità temporale eventuale ciclo for che inizializza i contatori: k passi; ciclo for che conta gli elementi: n passi; ciclo for che somma i contatori: k passi; ciclo for che mette gli elementi in b in ordine: n passi; eventuale ciclo for che ricopia b in a: n passi. Quindi: T(n, k) = Θ(n+k) Se k è dello stesso ordine di grandezza di n, si ha: T(n) = O(n) (complessità lineare). Complessità spaziale L'algoritmo utilizza due array ausiliari: b di lunghezza n e c di lunghezza k. Quindi anche lo spazio è lineare: S(n, k) = Θ(n+k) Se l'insieme delle possibili chiavi è molto grande l'algoritmo non è usabile: troppo dispendioso in spazio e in tempo. 19/02/2007 E. Giovannetti - AlgELab Lez Esempio Si può usare il counting sort per ordinare una sequenza di stringhe? Una stringa non è un numero, ma può essere identificata con il numero intero costituito dalla sua rappresentazione binaria (per mezzo dei codici ASCII o Unicode). Assumiamo che le stringhe che si vogliono ordinare abbiano una lunghezza massima di 20 caratteri. Quante sono le diverse possibili stringhe di lunghezza 20 su un alfabeto di 26 caratteri? Risposta: > (2 10) 20 = = (2 10 ) ~ = sarebbe necessario allocare un array c di giga elementi (che tra l'altro resterebbe poi quasi tutto vuoto...). Impossibile! 19/02/2007 E. Giovannetti - AlgELab Lez Bucket sort (ordinamento "a secchielli") Risolve lo stesso problema del counting sort: ordinare un array di n elementi aventi chiavi intere comprese fra 0 e k-1 (o fra m ed m+k-1). Opera come l'integer sort e il counting sort, mantenendo però un array di liste ("secchielli") anziché di contatori. La j-esima lista, buckets[j], conterrà gli elementi con chiave uguale a j. Alla fine si concatenano le liste in una lista-risultato, o le si ricopia in un array. Complessità: Θ(n+k). Poiché utilizza liste concatenate, è un algoritmo conveniente quando la sequenza è già rappresentata da una linked list; nel caso di array, invece, è di solito meglio il counting sort o l'integer sort. 19/02/2007 E. Giovannetti - AlgELab Lez Esercizio 2 Si completino e si provino le realizzazioni del counting sort. Si realizzino e si provino due versioni del bucket sort: una per ordinare liste concatenate, l'altra per ordinare arrays. Come bisogna fare affinché il bucket sort sia stabile? 19/02/2007 E. Giovannetti - AlgELab Lez
5 Ordinamento in base ad una tupla di chiavi. Si supponga di voler ordinare in base a cognome, nome, e anno di nascita una sequenza di record od oggetti rappresentanti persone, in modo che l'ordine sia (alfabetico) per cognome, a parità di cognome sia per nome, e a parità di nome per anno di nascita. Si può operare in modi diversi: Definire una funzione di confronto che confronta dapprima i cognomi, se questi sono uguali confronta i nomi, e così via. Ordinare dapprima per cognome mettendo gli elementi con cognomi uguali in liste separate, poi ordinare per nome ogni lista di cognomi uguali, e così via. Ordinare dapprima tutta la sequenza per anno di nascita; poi riordinarla per nome con un algoritmo stabile; infine riordinarla per cognome con un algoritmo stabile. Poiché un algoritmo stabile preserva l'ordine precedente, alla fine gli elementi risulteranno ordinati nel modo voluto! 19/02/2007 E. Giovannetti - AlgELab Lez Radix sort Ordina una sequenza di elementi con chiavi composte da coppie (o d-tuple) di valori compresi in un range limitato, per mezzo del terzo metodo illustrato nel lucido precedente e usando il counting sort o il bucket sort come algoritmo di ordinamento stabile. Il numero totale di iterazioni è quindi d(n + k), con d costante. Si ha quindi ancora complessità temporale lineare: T(n, k) = Θ(n+k) Naturalmente se d non è molto piccolo (cioè di poche unità), la costante moltiplicativa influenza pesantemente l'efficienza. 19/02/2007 E. Giovannetti - AlgELab Lez Esempio: ordinamento lineare su chiavi intere. Vogliamo realizzare un algoritmo di ordinamento lineare per array di elementi aventi chiavi di tipo intero a 32 bit (come il tipo int di Java). Si può allora: scomporre il campo di tipo int in due campi di 16 bit; ordinare due volte l'array con il counting sort: prima rispetto ai 16 bit meno significativi; poi rispetto ai 16 bit più significativi. Oppure: scomporre il campo di tipo int in 4 campi di 8 bit (bytes); ordinare quattro volte l'array con il counting sort: prima rispetto al byte più basso; poi rispetto al secondo byte dal basso; e così via. La seconda soluzione occupa meno spazio (i contatori sono 2 8 invece di 2 16 ) ma ripete il counting sort 4 volte invece di 2. 19/02/2007 E. Giovannetti - AlgELab Lez Ordinamento lineare su chiavi intere (continua) Poiché nel counting sort le chiavi devono essere interi non negativi, i campi a 16 o a 8 bit in cui si scompone un valore int devono essere di tipo intero assoluto (unsigned). In Java il solo tipo intero assoluto è il tipo char a 16 bit. Quindi, attenzione: solo int non negativi: i due campi da 16 bit sono proprio i 16 bit rispettivamente più alti e più bassi del campo int; in Java, se x è un int, usando l'operatore >> di shift: x basso = (char) x x alto = (char) (x >> 16) int anche negativi: bisogna tener conto della rappresentazione binaria in complemento a 2 dei numeri negativi; in Java, se x è un int: x basso = (char) x x alto = (char) ((x >> 16)^0x8000) (vedi esercizio 3) 19/02/2007 E. Giovannetti - AlgELab Lez Ordinamento lineare di int non negativi in Java Definiamo una funzione che da un numero di tipo int estrae i 16 bit bassi o alti, a seconda del valore 0 o 1 di un altro parametro: static char mask(int m, int x) { if(m == 0) return (char) x; // bit bassi else return (char) (x >> 16); // bit alti Definiamo una procedura di counting sort parametrica che ordina sui 16 bit inferiori o superiori: static void countsort(int k, int[] a, int subfield) { for(int i = 0; i < n; i++) c[mask(subfield, a[i])]++; c[mask(subfield, a[i])]... eccetera Definiamo infine la procedura radixsort che richiama due volte il counting sort: public static void radsort(int[] a) { countsort(0x10000, a, 0); countsort(0x10000, a, 1); dove 0x10000 è, in esadecimale, il numero 16 4, cioè 2 16 (il valore di k). 19/02/2007 E. Giovannetti - AlgELab Lez Ordinamento lineare di int non negativi in Java Se vogliamo invece effettuare la scomposizione in bytes, la funzione di estrazione potrebbe essere: static char mask(int m, int x) { switch(m) { case 1: break; case 2: x >>= 8; break; case 3: x >>= 16; break; case 4: x >>= 24; break; return (char) (x & 0xFF); (usiamo ancora il tipo char poiché in Java non esiste un tipo unsigned byte) Eccetera. 19/02/2007 E. Giovannetti - AlgELab Lez
6 Esercizio 3 Esercizio 3.1. Si completi la procedura di radix sort per interi non negativi con scomposizione in due campi da 16 bit. Si realizzi la procedura di radix sort per interi non negativi con scomposizione in bytes. Utilizzando array casuali di grandi dimensioni, si confrontino sperimentalmente tali due procedure con il quicksort, in modo da stabilire quale di esse è migliore, e in quali situazioni il radix sort batte il quicksort. Esercizio 3.2 (facoltativo). Si realizzi una procedura di radix sort per int con segno. La difficoltà è stabilire come estrarre i campi da 16 bit: ripassare la rappresentazione in compl. a due (Architetture). 19/02/2007 E. Giovannetti - AlgELab Lez
Classificazione degli algoritmi di ordinamento. Algoritmi e Laboratorio a.a Lezioni. Esercizio 1. Si può fare meglio?
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2009-10 Lezioni prof. Elio Giovannetti Lezione 24 Algoritmi di ordinamento
DettagliAlgoritmi e Laboratorio a.a Lezioni. prof. Elio Giovannetti
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2005-06 Lezioni prof. Elio Giovannetti Parte 7 Algoritmi di ordinamento
DettagliDallo heap per la coda con priorità a un nuovo algoritmo di ordinamento. Algoritmi e Laboratorio a.a Lezioni. I due cicli dell'algoritmo
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. -1 Lezioni prof. Elio Giovannetti Lezione Heapsort versione 11/11/
DettagliDallo heap per la coda con priorità a un nuovo algoritmo di ordinamento. Algoritmi e Laboratorio a.a Lezioni
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 26-7 Lezioni prof. Elio Giovannetti Parte 21 Heapsort versione 2/2/27
DettagliSommario. Algoritmi di ordinamento lineari: CountingSort. BucketSort. RadixSort
Sommario Algoritmi di ordinamento lineari:! CountingSort! BucketSort! RadixSort 1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, nel
DettagliAlgoritmi di ordinamento (I parte)
(I parte) Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Definizione formale del problema Input:! Una sequenza di n numeri Output:! Una permutazione
DettagliCalcolare x n = x x x (n volte)
Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione
DettagliI numeri rossi sulla Mole Antonelliana a Natale. Algoritmi e Laboratorio a.a Lezioni. Le regole della riproduzione dei conigli.
I numeri rossi sulla Mole Antonelliana a Natale Università di Torino acoltà di Scienze MN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 29- Lezioni prof. Elio
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 14: ALGORITMI di ordinamento di array RICERCA sequenziale e binaria Array bidimensionali (matrici) Passaggio di argomenti al main Operazioni su array Un array
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2009-10 Lezioni prof. Elio Giovannetti Lezione 7 Il problema della
DettagliAlgoritmi di ordinamento
Capitolo 7 Algoritmi di ordinamento 7.1 Selection sort L algoritmo di ordinamento per selezione opera nel modo seguente: supponiamo che i primi k elementi siano ordinati; l algoritmo sceglie il minimo
DettagliAlgoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non
DettagliAlgoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati
Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 14 Array parzialmente riempiti. Algoritmi sugli array. Arrayparzialmente
DettagliEsercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera
DettagliCamil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:
MergeSort Usa la tecnica del divide et impera: 1 Divide: dividi l array a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate 1 Esempio di esecuzione 7 2 4 5
DettagliAlgoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion
DettagliSommario. Un algoritmo di ordinamento di complessità lineare: CountingSort. [CLRS10] cap. 8 par.8.2
Sommario Un algoritmo di ordinamento di complessità lineare: CountingSort [CLRS10] cap. 8 par.8.2!1 Ordinamento in tempo lineare. Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento
DettagliProva di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE
Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).
DettagliAlgoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc
Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento
DettagliCOMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Ω (grande omega) Diciamo che T(n) = Ω (f(n)), - leggiamo T(n) ha complessità
DettagliSchema generale di un algoritmo divide-et-impera. Algoritmi e Laboratorio a.a Lezioni. Esempio: mergesort su array. Esempio: quicksort
Schema generale di un algoritmo divide-et-impera Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni prof.
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliIntroduzione all'algoritmica per i Licei (C++). 2 Massimo e minimo.
Introduzione all'algoritmica per i Licei (C++). 2 Massimo e minimo. versione 13 gennaio 2015 Elio Giovannetti Dipartimento di Informatica Università di Torino Quest'opera è distribuita con Licenza Creative
DettagliProgetto Corda. Alberto Ferrari. Alberto Ferrari Ingegneria dell'informazione, UniPR. 18/12/2017 Progetto Corda
Progetto Corda Alberto Ferrari Alberto Ferrari Ingegneria dell'informazione, UniPR file:///e:/cordanoweb/lez/array.html#3 1/33 Array (ordinamento) 2/33 file:///e:/cordanoweb/lez/array.html#3 2/33 Sort
DettagliCalcolatori Elettronici: indirizzi e oggetti
Calcolatori Elettronici: indirizzi e oggetti G. Lettieri 3 Marzo 2019 Gli indirizzi sono relativi ad un bus: tutti i componenti collegati al bus, in grado di rispondere a richieste di lettura o scrittura,
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliAlgoritmi e strutture dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare alfabeticamente lista di nomi, o insieme
DettagliAnalisi di algoritmi e di problemi
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni prof. Elio Giovannetti Analisi di algoritmi e di problemi
DettagliUn esempio di calcolo di complessità: insertion sort
Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o
DettagliDivide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente
Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente
DettagliStrutture Dati. Nicu Sebe. Informatica Nicu Sebe 1 / 27
Strutture Dati Nicu Sebe Informatica Nicu Sebe 1 / 27 Dati e Tipi di Dati e Spazi Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti
DettagliOrdinamenti per confronto: albero di decisione
Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto
DettagliAlgoritmi di ordinamento
Algoritmi e Strutture Dati Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Algoritmi di ordinamento Esempi: ordinare una lista di nomi alfabeticamente, o
DettagliSommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort
Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti
DettagliOrdinamento per inserzione e per fusione
Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo
DettagliEsercizio. 2 i=i*2) j=j*2)
Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre
DettagliCOGNOME E NOME (IN STAMPATELLO) MATRICOLA
Politecnico di Milano Facoltà di Ingegneria dell Informazione Informatica 3 Proff. Campi, Ghezzi, Matera e Morzenti Seconda prova in itinere 4 Luglio 2006 COGNOME E NOME (IN STAMPATELLO) MATRICOLA Risolvere
DettagliAlgoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi
DettagliAlgoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Ringraziamenti prof. Stefano Mizzaro, Università di Udine http://users.dimi.uniud.it/~stefano.mizzaro/
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min
DettagliArgomenti. Array. Stringhe. Merge sort
ARRAY Ivan Lanese Argomenti Array Stringhe Merge sort Array E' una struttura dati che contiene più elementi dello stesso tipo Normalmente su elementi diversi di uno stesso array si fanno operazioni simili
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 17 A. Miola Gennaio 2012 1 Contenuti q Array paralleli q Array e oggetti q Ricerca sequenziale q Ricerca binaria q Fusione di sequenze
DettagliInformatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica e Ing. Edile/ Prof. Verdicchio/ 16/07/2013 / Foglio delle domande / VERSIONE 1 1) In un diagramma di flusso, la rappresentazione di un ciclo WHILE include sicuramente almeno:
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
DettagliRicerca in Array/Lista. Dato un array o lista di n elementi, vogliamo trovarne uno (e.g., un numero x in un array di interi)
Tabelle Hash Ricerca in Array/Lista Dato un array o lista di n elementi, vogliamo trovarne uno (e.g., un numero x in un array di interi) Ricerca in Array/Lista Dato un array o lista di n elementi, vogliamo
DettagliInsert sort. Considero il primo elemento a 1. cerco il minimo tra gli elementi 3...N. scambio il minimo trovato con il primo e- lemento
Insert sort Considero il primo elemento a 1 cerco il minimo tra gli elementi 2...N scambio il minimo trovato con il primo e- lemento considero ora a 2 cerco il minimo tra gli elementi 3...N scambio il
DettagliOrdinamento. Lorenzo Donatiello,Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna
Ordinamento Lorenzo Donatiello,Moreno Marzolla Dip. di Scienze dell'informazione Università di Bologna Original work Copyright Alberto Montresor, University of Trento (http://www.dit.unitn.it/~montreso/asd/index.shtml)
DettagliAlgoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.
E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento giu 03 ASD 1 Selection Sort SelectionSort(dati[]) { for (i=0; i
DettagliStrutture Dati. Luca Abeni
Strutture Dati Luca Abeni Dati e Tipi di Dati Una variabile è caratterizzata dal suo Tipo Specifica i valori che può assumere (Insieme di Definizione) Specifica a quanti byte di memoria la variabile è
DettagliTecniche della Programmazione, lez.28
Tecniche della Programmazione, lez.28 Problema dell'ordinamento di una sequenza di elementi lavorare sulla sequenza ordinata puo' essere utile in parecchi casi - ricerca di un elemento - unicita' di un
DettagliAlgoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Algoritmi su Array Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Algoritmi su Array 2 Ringraziamenti prof. Stefano Mizzaro,
DettagliALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
DettagliLaboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A
Ingegneria e Scienze Informatiche - Cesena A.A. 2014-2015 pietro.dilena@unibo.it MergeSort MergeSort MergeSort: esempio MergeSort: pseudocodice Algoritmo di ordinamento ricorsivo basato sulla tecnica Divide
DettagliInformatica Generale Andrea Corradini Algoritmi: ordinamento per inserimento e ricorsione
Informatica Generale Andrea Corradini 14 - Algoritmi: ordinamento per inserimento e ricorsione Sommario Un algoritmo iterativo: l'ordinamento per inserimento (insertion sort) La ricorsione: i numeri triangolari
DettagliDipartimento di Elettronica, Informazione e Bioingegneria API 2013/4
Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Heap sort; ordinamento senza confronti @ G. Gini 2013 Ordinamento per confronti: complessita' Esistono altri algoritmi di ordinamento
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
DettagliOlimpiadi di Informatica 2009 Giornate preparatorie
Olimpiadi di Informatica 2009 Giornate preparatorie Dipartimento di Informatica Università di Torino Elio Giovannetti marzo 2009 Lino il giornalaio. 03/19/09 1 Caratterizzazione ricorsiva Siano val[0],
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a Terzo scritto 19 Febbraio 2010
Cognome Matricola Nome Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2009 10 Terzo scritto 19 Febbraio 2010 Quesito Una Farmacia è rappresentata da un array di farmaci
DettagliClassi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array
Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a
DettagliLezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliGli algoritmi ricorsivi di ordinamento. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino
ordinamento Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Merge Sort Ricorsivo, divide et impera Stabile Divisione: due sottovettori SX e DX rispetto al centro del vettore. p r A.A.
DettagliLo sviluppo di un semplice programma e la dimostrazione della sua correttezza
Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene
DettagliDati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
DettagliAlgoritmi di Ordinamento
Algoritmi di Ordinamento 1 Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento Statistiche di ordine 2 Selection Sort SelectionSort(dati[]) {
DettagliFondamenti di Informatica
Algoritmi di ordinamento Gli ordinamenti interni sono fatti su sequenze in memoria centrale Fondamenti di Informatica 18. Algoritmi di ordinamento in C++ Gli ordinamenti esterni sono fatti su sequenze
DettagliALGORITMI Docente: Prof. Domenico Cantone
CORSO SPECILE DI DURT NNULE PER IL CONSEGUIMENTO DELL BILITZIONE LL INSEGNMENTO NELL SCUOL SECONDRI DI I e II GRDO Indirizzo Fisico - Informatico - Matematico a.a. 00/07 - Classe - Informatica LGORITMI
DettagliFondamenti di Programmazione - Prof.ssa Gargano Anno Acc Esercitazioni 2009
Fondamenti di Programmazione - Prof.ssa Gargano Anno Acc. 2008-09 Esercitazioni 2009 1. Mostrare per induzione che per ogni intero positivo n 0, la seguente affermazione S(n) é vera: S(n): n i=0 2i = 2
DettagliFondamenti di Informatica L-A. Esercitazione 6
Fondamenti di Informatica L-A Esercitazione 6 Passaggio dei Parametri nelle Funzioni Ordinamento di Vettori Paolo Torroni Università degli Studi di Bologna Laurea in Ingegneria Elettronica e delle Telecomunicazioni
DettagliCorso di Tecniche di Programmazione
Problema: Data una sequenza di elementi in ordine qualsiasi, ordinarla. Corso di Tecniche di Programmazione Corsi di Laurea in Ingegneria Informatica ed Automatica Anno Accedemico 003/004 Proff. Giuseppe
DettagliQUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT)
QUICKSORT Basato sul paradigma divide-et-impera (come MERGE-SORT) Divide: stabilisce un valore di q tale da dividere l array A[p.. r] in due sottoarray non vuoti A[p.. q] e A[q+1.. r], dove ogni elemento
DettagliEsercitazione 1. Introduzione agli algoritmi di ordinamento
Esercitazione 1 Introduzione agli algoritmi di ordinamento Algoritmi di ordinamento Algoritmi utilizzati per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine,
DettagliSi usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato
Le tavole hash È il modo con cui sono realizzati gli HashSet Si usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato Principio base Gli array hanno le caratteristiche
DettagliORDINAMENTO PER SELEZIONE ORDINAMENTO PER SELEZIONE ORDINAMENTO VELOCE CONFRONTI
ORDINAMENTO PER SELEZIONE Per l analisi delle prestazioni di tale algoritmo di ordinamento, si considerano i due cicli for annidati: poiché i confronti avvengono nel ciclo interno si ha che n 2 i= 0 (
DettagliIn questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Dati Conclusioni parte b versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.
DettagliIntroduzione all'algoritmica. 1 Primo esempio: il massimo di una sequenza.
Introduzione all'algoritmica (tratta da una presentazione preparata da Elio Giovannetti) 1 Primo esempio: il massimo di una sequenza. Ferruccio Damiani Dipartimento di Informatica Università di Torino
DettagliInformatica per Statistica Riassunto della lezione del 21/10/2011
Informatica per Statistica Riassunto della lezione del 1/10/011 Igor Melatti Costrutti del linguaggio C: ripasso Si consideri il programma C alla Figura 1 ci sono due dichiarazioni di funzioni, insertion
DettagliInformatica (A-K) 14. Linguaggio C -4
Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche
DettagliAlgoritmi e Principi dell Informatica
Algoritmi e Principi dell Informatica Appello del 1 Settembre 2016 Chi deve sostenere l esame integrato (API) deve svolgere tutti gli esercizi in 2 ore e 30 minuti. Chi deve sostenere solo il modulo di
DettagliInformatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012
Informatica per Statistica Riassunto della lezioni del 14/11/2012 e 16/11/2012 Igor Melatti Cenni sui puntatori in C Per ogni variabile normale dichiarata, il compilatore riserva una precisa quantità di
DettagliCorso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione
Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
DettagliLaboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly
Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly Scrivere il codice ARM che implementi le specifiche richieste e quindi verificarne il comportamento usando il simulatore
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche
Dettagli