Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmi di ordinamento
Lo scopo è ordinare in senso [de]crescente il
contenuto di un vettore di N elementi senza
Algoritmi utilizzare un secondo vettore
Esiste molta letteratura scientifica a riguardo
e molti metodi adatti a vari casi, ma qui si
considerano tre semplici algoritmi di esempio
Ver. 2.4 molto per l’ordinamento in senso crescente (o
meglio, non-decrescente):
Selection sort
Bubble sort
Insertion sort
© 2010 - Claudio Fornaro - Corso di programmazione in C
3 4
7 8
11 12
15 16
1 5 7 3 4 8 1 3 5 7 4 8
key
4 3 1 ordinati
17 18
19 20
27 28
no-op
31 32
Esercizi Homework 6
3. (Es. 4 sui file) Si scriva un programma che Si scriva un programma che per ciascuno degli
chieda il nome di un file contenente un testo algoritmi di ordinamento visti (bubble semplice e
qualsiasi e di questo conti quante sono le con variazioni, selection semplificato, selection,
parole che iniziano con ciascuna lettera insertion) per M volte (es. 100) riempia un
dell’alfabeto. vettore di N valori interi casuali (es. 1000) e lo
Lo si risolva con una soluzione a stati. riordini. Il programma deve misurare i tempo
Esempio di output: impiegato per gli M ordinamenti per ciascuno
Parole che iniziano con A: 45 degli algoritmi. Impostare M e N in modo da
Parole che iniziano con B: 12 eseguire un numero significativo di prove con
Parole che iniziano con C: 27 vettori di dimensioni grandi (1000-10000), medi
… (100-1000) e piccoli (100). Trarne le conclusioni.
Parole che iniziano con Z: 3
33
Homework 6
Continuazione:
Includendo <time.h> si possono usare le
seguenti funzioni:
time(NULL)
restituisce un numero intero di tipo time_t che
corrisponde all’istante attuale
difftime(time_t t2, time_t t1) restituisce
(come valore double) il numero di secondi
intercorsi tra t1 e t2
Nota: il tipo time_t è in genere un sinonimo di long
e si possono definire variabili di tale tipo:
time_t ora, t1, t2;
t1=time(NULL);