Ordinamento.

Slides:



Advertisements
Presentazioni simili
Algoritmi in C++ (1) da completare
Advertisements

Strutture di controllo in C -- Flow Chart --
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Crivello Di Eratostene (fonte wikipedia
void binario(int n); …………………
Ricerca sequenziale in un array di interi
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
Cicli e Array. 2 Esercizio 1 La classe «Smartphone» ha i seguenti attributi: - Modello -Processore -Ram - Pollici -Sistema operativo -Disponibilità (boolean)
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Indici di Posizione Giulio Vidotto Raffaele Cioffi.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Maria Antonietta Volonté Dipartimento di Neurologia
Il sistema della pena in Italia
© 2007 SEI-Società Editrice Internazionale, Apogeo
Fasi della politica economica europea: dal dopoguerra all’Unione monetaria 1. Dopo la II guerra mondiale i principali paesi europei avviano un processo.
La fisica delle particelle elementari
Algoritmi su Array Moreno Marzolla
Progettazione di acquedotto
Dal quanto di luce all’effetto fotoelettrico
Allergia, senescenza e medicina rigenerativa
Forum per la Società dell’Informazione Piano Telematico Calabria
Laboratorio di astronomia 2016
Orientamento interno Per quanto abbiamo fino ad ora appreso, il fotogramma è una prospettiva centrale rigorosa in cui il centro di proiezione si trova.
Criteri di scelta degli investimenti: TIR e VAN
Lo scenario macro-economico
LA TRASMISSIONE DELLA POLITICA MONETARIA
9. Problemi ricorrenti: ordinamento e ricerca
Divide et Impera Quicksort Mergesort Charles Antony Richard Hoare
Programmazione strutturata
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
8b. Esempi di algoritmi con l’uso di array: ordinamento e ricerca
Algoritmi e Strutture Dati
Divide et Impera Quicksort Mergesort
Rapporti e proporzioni
Programmazione e Laboratorio di Programmazione
Classe III A A.s – 2012 Programma di Informatica
Programmazione e Laboratorio di Programmazione
Lezione n°12 Prof.ssa Rossella Petreschi
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Programmazione e Laboratorio di Programmazione
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Scrivere programmi corretti
Ordinamento in tempo lineare
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Schema generale, visita in ampiezza e profondità.
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Process synchronization
APPUNTI SUL LINGUAGGIO C
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
Process synchronization
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Programmazione e Laboratorio di Programmazione
Ricerca 01/08/2019 package.
FORMAT DEL COMPITO DI REALTA’
TCS230 Sensore di colore.
Algoritmi di ordinamento
Programmazione e Laboratorio di Programmazione
Process synchronization
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Ordinamento

Scopo del programma Il programma simula l’ordinamento di oggetti in scaffali Si immagina di avere 4 scaffali ad ognuno dei quali viene associato un tipo di oggetti Gli oggetti vengono acquisiti disordinatamente dal sistema così come vengono dati dall’operatore Il compito del programma è quello di sistemare tutti gli oggetti al proprio posto Gli oggetti sono multipli di 4 in modo tale che per ogni scaffale venga assegnato lo stesso numero di oggetti Il programma dovrebbe ordinare oggetti uguali nello stesso scaffale e tutti in ugual numero Se in uno scaffale si trovano oggetti uguali di numero maggiore del previsto, sicuramente ci sarà uno scaffale dove il numero di oggetti è minore Gli oggetti in più in uno scaffale vengono sistemati nello scaffale dove gli oggetti sono di meno ma non saranno tutti uguali

Es: disordine libri pupazzi giocattoli fumetti

Es: ordine libri pupazzi giocattoli fumetti

Struttura del programma Il programma è formato da tre parti fondamentali: il main e due subroutine void insertion e void mostraScaffali Nel main vengono acquisiti i dati e vengono richiamate le due subroutine La subroutine insertion ordina i dati secondo gli scaffali di appartenenza La subroutine mostraScaffali mostra a video i dati

Struttura dati I dati vengono dichiarati in un array di interi il cui massimo numero è 400 Il valore degli array deve andare da 1 a 4 Al numero 1 si associa quaderno, al numero 2 si associa giocattolo al numero 3 si associa fumetto e al numero 4 pupazzo Il confronto tra i dati è quindi fatto tra numeri interi che vanno da 1 a 4

Acquisizione dati for (i=0;i<tot;i++){ do{ printf("\ninserisci l'oggetto %d : ",i+1); scanf("%d",&oggetti[i]); }while(oggetti[i]<1 || oggetti[i]>4); } Il numero dei dati è tot; essi vengono indicizzati dal numero progressivo i Gli oggetti vengono acquisiti per ogni ciclo; se il dato ha un valore <1 oppure valore >4, si richiede l’inserimento, altrimenti si avanza di una unità il ciclo for

Acquisizione dati i=1 a[i] 1<a[i]<4? si no i<tot? no si i=i+1

Ordinamento

Ordinamento int temp; /* Indice temporaneo per scambiare elementi */ int prossimo; int attuale; for (prossimo=1;prossimo<tot;prossimo++){ temp=oggetti[prossimo]; attuale=prossimo-1; while ((attuale>=0) && (oggetti[attuale]>temp)){ oggetti[attuale+1]=oggetti[attuale]; attuale=attuale-1; } oggetti[attuale+1]=temp;

Pseudocodice Per prossimo=1…..tot{ temp ←oggetti[prossimo] attuale ←prossimo – 1 while attuale > 0 e oggetti[attuale] > temp do {oggetti[attuale+1] ←oggetti[attuale] attuale←attuale-1 } oggetti[attuale+1] ←temp

Ordinamento Il confronto dei dati è fatto a due a due Ogni elemento viene confrontato con il precedente Se il dato attuale è maggiore o uguale al precedente, non viene fatto lo scambio altrimenti viene fatto Se i dati sono n e sono già ordinati, il numero di iterazioni è pari a n; se il disordine è massimo, il numero di iterazioni è pari a n*n

Flow chart fine si no no si prossimo←1 Prossimo>tot? temp ← Oggetti[prossimo] attuale← prossimo-1 Attuale>0?&& oggetti[attuale]>temp? no si Oggetti[attuale+1] ←temp Oggetti[attuale+1] ←oggetti[attuale] Prossimo=prossimo+1 attuale ←attuale-1

esempio

esempio