• Non ci sono risultati.

Corso di Ingegneria Elettronica Insegnamento di “Strutture Software 1” a.a. 2008-09 Esercitazione n. 3

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di Ingegneria Elettronica Insegnamento di “Strutture Software 1” a.a. 2008-09 Esercitazione n. 3"

Copied!
1
0
0

Testo completo

(1)

Corso di Ingegneria Elettronica

Insegnamento di “Strutture Software 1” a.a. 2008-09

Esercitazione n. 3

1. Sviluppare un metodo che implementi l’ordinamento a bolle (BubbleSort). L’array è scandito dall’indice di valore più alto a quello più basso, scambiando tra loro elementi adiacenti che sono fuori ordine. Per prima cosa si confronta data[n-1] con data[n-2], scambiandoli se fuori ordine, poi si confronta data[n-2] con data[n-3], scambiandoli se fuori ordine, e così via fino a data[1] e data[0]. In tal modo gli elementi minori sono fatti risalire fino agli indici di valore inferiore. Tuttavia questo è solo il primo passo attraverso l’array: si ripete nuovamente tale procedimento, ma l’ultimo confronto avviene tra data[2] e data[1], perché l’elemento più piccolo è già nella sua posizione corretta, la posizione 0. Questo secondo passo porta il secondo elemento più piccolo nella posizione 1.

La procedura continua fino all’ultimo passo, quando si effettua un solo confronto tra data[n-1] e data[n-2], ed eventualmente uno scambio. Vediamo una rappresentazione grafica:

Provare il corretto funzionamento dell’algoritmo in diverse situazioni: per esempio, array in ordine casuale, ordinato, ordinato in modo inverso e array di valori tutti uguali.

2. Calcolare la complessità computazionale asintotica dell’algoritmo di ordinamento a bolle.

3. Valutare sperimentalmente la complessità degli algoritmi SelectionSort e BubbleSort. Introdurre nell’algoritmo delle variabili apposite, con le istruzioni di incremento nei punti opportuni, per contare il numero di confronti e spostamenti. Eseguire l’algoritmo su più istanze dei dati in ingresso, tracciando i grafici delle variabili contatore in funzione della dimensione dei dati in ingresso. Usare array di valori casuali di dimensione crescente: per esempio, n={ 21, 22, 23, ..., 214 }.

0 5 5 5 5 1 1 1

1 2 2 2 1 5 2 2

2 3 3 1 2 2 5 3

3 8 1 3 3 3 3 5

4 1 8 8 8 8 8 8

Riferimenti

Documenti correlati

La stabilità delle soluzioni numeriche dell’equazione dell’oscillatore può essere studiata in via generale solo nel caso lineare; da questo studio si deduce che la condizione

• Elevate tensioni di blocco diretto e inverso (quest’ultima specifica può non essere richiesta se si ha un diodo in antiparaIlelo). • Corrente diretta

Utilizzare questa funzione in un programma che legge una sequenza di numeri e stampa a video i valori massimo e minimo. Esercizio n o

Ad ogni istante di tempo, lo stato del sistema pu`o essere rappresentato geometricamente come un punto in uno spazio 6N -dimensionale. Tale spazio delle fasi `e comunemente

Sviluppare un metodo ricorsivo per calcolare il massimo comun divisore (MCD) tra due numeri naturali utilizzando l’algoritmo

Verificare il programma sviluppato sull’elenco di file presenti in dati.txt, il quale contiene 82 righe; su ogni riga è presente un nome di file e, separata con tabulazioni (\t),

Una possibile soluzione consiste nel trattare tali numeri come stringhe di cifre numeriche, memorizzando i valori corrispondenti a queste cifre su due pile, poi eseguire

La sequenza di processi “in ingresso al sistema” è contenuta nel file processes.txt: ogni riga contiene i dati di un processo, cioè il pid, il nome e la memoria