• Non ci sono risultati.

Laboratorio di Algoritmi a.a. 2006-07Esercitazione 4Primi algoritmi di ordinamento.

N/A
N/A
Protected

Academic year: 2022

Condividi "Laboratorio di Algoritmi a.a. 2006-07Esercitazione 4Primi algoritmi di ordinamento."

Copied!
2
0
0

Testo completo

(1)

27/11/2006

1

Università di Torino Università di Torino Università di Torino

Università di Torino –––– Facoltà di Scienze MFNFacoltà di Scienze MFNFacoltà di Scienze MFNFacoltà di Scienze MFN Corso di Studi in Informatica

Corso di Studi in Informatica Corso di Studi in Informatica Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Curriculum SR (Sistemi e Reti) Curriculum SR (Sistemi e Reti) Curriculum SR (Sistemi e Reti)

Laboratorio di Algoritmi a.a. 2006-07

Esercitazione 4 Primi algoritmi di ordinamento.

AlgELab-06-07 - Lab-Es. 5 2

Esercizio 1.

Si realizzino nella classe ArrayUtil le seguenti procedure (metodi statici) illustrate a lezione:

public static boolean èOrdinato(int[] a);

public static boolean èOrdinato(string[] a);

public static void isort(int[] a); insertion sort public static void ssort(int[] a); selection sort public static void msort(int[] a); merge sort

Si definisca inoltre una classe di prova in cui si invochino su uno stesso arrayi tre metodi di ordinamento, confrontandone i tempi.

Si effettui la prova sia su array di elementi distribuiti a caso che su array già ordinati; entrambe le prove vengano effettuate su array di lunghezze crescenti, e si compili una tabella compara- tiva dei tempi ottenuti, eventualmente accompagnata da grafico.

Tabella e grafico possono essere consegnati su foglio scritto a mano oppure realizzati e consegnati elettronicamente (in formati di uso comune).

(2)

27/11/2006

2

AlgELab-06-07 - Lab-Es. 5 3

Suggerimenti

...long t0, t1;

...out.println("\n*************************\n");

copia = copy(arrayOriginale);

out.println("l'array" + (èOrdinato(copia) ? "" : " NON") + " e' ordinato");

out.println("sto ordinando con isort");

t0 = nanoTime();

isort(copia);

t1 = nanoTime();

out.println("l'array" + (èOrdinato(copia) ? "" : " NON") + " e' ordinato");

out.println("tempo impiegato: " + (t1 - t0)/10000 + " *10 ms");

...

AlgELab-06-07 - Lab-Es. 5 4

Esercizio 2 (banale)

Si realizzi una versione per array di stringhe di uno a scelta degli ordinamenti precedenti.

Esercizio 3 (facoltativo)

Si realizzi in C una versione per liste concatenate di uno a scelta dei tre algoritmi precedenti.

Esercizio 4 (facoltativo)

Si definisca una classe di oggetti contenenti altri dati oltre alla chiave rispetto a cui si effettua l'ordinamento, e per almeno uno dei tre algoritmi precedenti si definisca la corrispondente

procedura di ordinamento di array di oggetti di tale classe.

Si scriva poi un programma di prova che permetta di testare la stabilità dell'ordinamento.

Riferimenti

Documenti correlati

1 Per ognuna delle n − 1 iterazione del ciclo esterno, può essere eseguito al massimo un confronto con esito false, cioè non seguito da uno scambio, dato che esso causa la

public void replaceElement(Position p, Object element) throws InvalidPositionException;. public void swapElements(Position a, Position b) throws

 A swap of "far away" elements may result in a duplicate key passing over to the left of a. preceding instance of the

 Focusing of the task of sorting, the heap sort ordering algorithm, is implemented through 3 functions.  heapify

Scrivere un metodo ricorsivo che, dati un array bidimensionale di interi a ed un intero n, restituisce true se n compare in a, false altrimenti. public static boolean

Scrivere un metodo in linguaggio Java che, dato un array di interi a, resti- tuisca true se i suoi elementi sono in ordine non decrescente (a[0]≤ a[1] ≤.. Si consideri la

- un metodo che restituisce una stringa che descrive un volo non diretto tramite sigla del volo, citt`a e nome dell’aereoporto di partenza, citt`a e nome dell’aereoporto di

[r]