Corso di Fondamenti di Informatica
|
|
|
- Amando Forti
- 9 anni fa
- Просмотров:
Транскрипт
1 Corso di Fondamenti di Informatica Gli algoritmi di base sul tipo array: ordinamento e ricerca Claudio De Stefano - Corso di Fondamenti di Informatica 1
2 Algoritmi di ordinamento gli algoritmi si differenziano anche molto in base alla loro classe di complessità, ma una graduatoria di efficienza non è sempre facile da definirsi perché le loro prestazioni (tempi di ordinamento) possono anche dipendere dal particolare vettore da ordinare. Gli algoritmi di ordinamento classici sono: Ordinamento per selezione. Ordinamento per inserimento. Ordinamento a bolle.
3 ordinamento per selezione supponendo di dover ordinare il vettore in senso crescente, si parte selezionando l elemento più piccolo e ponendolo al primo posto; si procede applicando lo stesso processo al sottovettore non ordinato e così via fino a che quest'ultimo si riduce ad un solo elemento (il maggiore del vettore) l'ordinamento per selezione compie n-1 iterazioni Ordinamento per selezione del vettore di interi 11, 9, 17, 5, 14: Iterazione 0: 9<11 => selezione: 9 17>9 => niente 5<9 => selezione: 5 14>5 => niente scambio: 5,9,17,11,14 Iterazione 1: 17>9 => niente 11>9 => niente 14>9 => niente Iterazione 2: 11<17 => selezione: 11 14>11 => niente scambio: 5,9,11,17,14 Iterazione 3: 14<17 => selezione: 14 scambio: 5,9,11,14,17 (Vettore ordinato)
4 ordinamento per inserimento consiste nell'inserire un elemento alla volta nella posizione che gli spetta in un vettore già ordinato, partendo dal vettore vuoto. Ad esempio, nel caso del vettore di interi A = 50, 20, 40, 80, 30:
5 ordinamento a bolle per ogni iterazione si confrontano elementi adiacenti e si scambiano i loro valori quando il primo elemento è maggiore del secondo: alla fine di ogni iterazione, l elemento maggiore è «gorgogliato» fino alla cima del vettore attuale; i passi dell'algoritmo sono: Nell iterazione 0 si confrontano gli elementi adiacenti (A[0],A[1]),(A[1],A[2]),(A[2],A[3]),...(A[n-2],A[n-1]) si effettuano n-1 confronti; per ogni coppia (A[i], A[i+1]) si scambiano i valori se A[i+1] < A[i]; alla fine dell'iterazione, l elemento maggiore del vettore sarà situato in A[n-1] All iterazione 1 si effettuano gli stessi confronti e scambi, terminando con il secondo elemento maggiore in A[n-2] il processo termina con l'iterazione n-1, nella quale l elemento più piccolo si trova in A[0]
6 ricerca sequenziale confronta ogni elemento dell array con una chiave di ricerca; comincia col primo elemento e attraversa i restanti confrontandoli con la chiave finché se ne trova uno con il valore chiave cercato o finché termina il vettore; se l'elemento viene trovato se ne restituisce l indice, altrimenti si restituisce il valore 1
7 ricerca sequenziale in vettore ordinato confronta ogni elemento dell array con una chiave di ricerca; comincia col primo elemento e attraversa i restanti confrontandoli con la chiave finché se ne trova uno con il valore chiave cercato, o se ne trova uno con valore maggiore, o finché termina il vettore; se l'elemento viene trovato se ne restituisce l indice, altrimenti si restituisce il valore 1 Claudio De Stefano - Corso di Fondamenti di Informatica 7
8 ricerca binaria se il vettore è ordinato in base al campo che contiene il valore da cercare allora la ricerca binaria è certamente la migliore; si inizia dal centro del vettore: se l'elemento centrale non contiene la chiave cercata, allora si esamina l'elemento centrale del semivettore destro o di quello sinistro a seconda del fatto che la chiave dell'elemento esaminato sia maggiore o minore di quella cercata; il procedimento và avanti con semivettori sempre dimezzati fino a trovare, se c'è, l'elemento cercato. int RicercaBin (TipoDato v[], int basso, int alto, Tipodato chiave) { int centrale; TipoDato valorecentrale; while (basso <= alto) { centrale = (basso + alto)/2; // indice elemento centrale valorecentrale = v[centrale]; // valore dell indice centrale if (chiave == valorecentrale) return centrale; // trovato valore; restituisce posizione else if (chiave < valorecentrale) alto = centrale 1; // andare al semivettore inferiore else basso = centrale + 1; // andare al semivettore superiore } // elemento non trovato return -1; }
RICERCA IN UN VETTORE
RICERCA IN UN ETTORE La ricerca controlla se gli elementi di un vettore contengono un certo valore dato (detto anche chiave K) e comunica se l'elemento cercato esiste non esiste e nel caso che esista può
Fondamenti 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
Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento
Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:
Fondamenti 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
Algoritmi 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
Algoritmi 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
A. Ferrari. algoritmi notevoli. Python. Alberto Ferrari Informatica
algoritmi notevoli Python algoritmi o ricerca (verificare la presenza di un valore in una sequenza) o o o ricerca sequenziale (sequenza non ordinata) ricerca sequenziale (sequenza ordinata) ricerca binaria
Algoritmi di Ricerca Ordinamento
Algoritmi di Ricerca e Ordinamento Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Appunti Di Informatica Prof. Accarino 1 Algoritmi classici In ambito informatico alcuni problemi si presentano
A. Ferrari Algoritmi notevoli
Algoritmi notevoli in linguaggio C algoritmi o o o ricerca (verificare la presenza di un valore in un array) o o o ricerca sequenziale (array non ordinato) ricerca sequenziale (array ordinato) ricerca
RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3 RICORSIONE...4 ESEMPI DI RICORSIONE IN VISUAL BASIC...5 ESEMPI DI RICORSIONE IN C / C++...
Tre piccioni con una fava: Ricerca Binaria, Albero Binario di Ricerca e Ricorsione prof. Claudio Maccherani - 2006 / 2007 foto Claudio Maccherani RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
Algoritmi 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
Algoritmi di ordinamento. Algoritmi. Selection sort semplificato - I. Selection sort semplificato - II
Algoritmi Ver..4 Algoritmi di ordinamento Lo scopo è ordinare in senso [de]crescente il contenuto di un vettore di N elementi senza utilizzare un secondo vettore Esiste molta letteratura scientifica a
Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona
Lezione 8 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Programmazione ricorsiva Fattoriale Somma di n numeri Torre di Hanoi Array
Laboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile [email protected] Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi
Ordinamento di una lista: bubble-sort
Ordinamento di una lista: bubble-sort L idea è di far galleggiare il minimo della lista nelle prima posizione Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate Ordinamento:
Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
SOMMARIO IL PROBLEMA DELLA RICERCA. Algoritmi di ricerca: Algoritmi di ordinamento: RICERCA LINEARE
SOMMARIO IL PROBLEMA DELLA RICERCA Algoritmi di ricerca: Ricerca lineare; Ricerca binaria (su elenchi già ordinati). Dato un array e un oggetto, stabilire se l oggetto è contenuto in un elemento dell array,
Strutture dati e algoritmi. Sommario
Sommario Strutture dati e algoritmi: Ricerca (lineare e binaria) Ordinamento (per selezione) Strutture dati e algoritmi Come esempi concreti di applicazioni in C++ si useranno le strutture dati e gli algoritmi.
PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica
PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI Informatica I dati strutturati: gli array I vettori (o Array) Fino a ora abbiamo memorizzato le informazioni (valori)
ADT Coda con priorità
Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni
Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:
ESERCIZIO: Lettura/Scrittura Array Non è possibile leggere/scrivere un intero vettore con un unica operazione (a parte il caso particolare delle stringhe); occorre leggere/scrivere ognuno dei suoi componenti
Lezione 6 Selection/Insertion Sort su interi e stringhe
Lezione 6 Selection/Insertion Sort su interi e stringhe Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Tutoraggio Venerdì 14
Strutture dati dinamiche
Strutture dati dinamiche - Liste concatenate - Pile -> LIFO (last in first out) - Code -> FIFO (first in first out) - Alberi binari: gestione dati in algoritmi complessi Liste Concatenate Formata da elementi
Ricerca binaria (o dicotomica) di un elemento in un vettore
Ricerca binaria (o dicotomica) di un elemento in un La ricerca binaria o dicotomica è utilizzata per ricercare i dati in un ORDNATO. L algoritmo di ricerca binaria, dopo ogni confronto, scarta metà degli
ESERCITAZIONE MICROECONOMIA (CORSO B) 21-12-2009 ESEMPI DI ESERCIZI DI TEORIA DEI GIOCHI
ESERCITZIONE MICROECONOMI (CORSO ) --009 ESEMPI DI ESERCIZI DI TEORI DEI GIOCHI Questo documento contiene alcuni esempi di esercizi di teoria dei giochi. Gli esercizi presentati non corrispondono esattamente
Calcolo Parallelo e Distribuito
Calcolo Parallelo e Distribuito 1 Problema Progettare un algoritmo parallelo per l ordinamento di un vettore su un calcolatore MIMD a memoria distribuita con p processori Sorting Bitonico A. Murli Calcolo
Esercitazione 3. Heapsort
Esercitazione Heapsort Heapsort Algoritmo di ordinamento che utilizza una struttura dati detta heap per la gestione delle informazioni Tempo di esecuzione O(n lg n) Heap (binario) = struttura dati composta
Calcolo Parallelo e Distribuito
Calcolo Parallelo e Distribuito 1 Problema Progettare un algoritmo parallelo per l ordinamento di un vettore su un calcolatore MIMD a memoria distribuita con p processori Sorting Bitonico A. Murli Calcolo
Esercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] 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
Implementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
Per semplicità eliminiamo le ripetizioni nell'albero.
Albero binario di ricerca 20 40 100 95 Un albero binario di ricerca é un albero binario in cui ogni nodo ha un etichetta minore o uguale a quelle dei nodi nel sottoalbero radicato nel figlio destro e maggiore
