IL MASSIMO DI UN ARRAY
ESERCIZIO
Trovare il valore massimo
all’interno di un array a di
n elementi ed assegnarlo
alla variabile max.
Poi proveremo insieme
l’esecuzione con l’array
a=(5,7,3,1,9,2)
BIOINFO3 - Lezione 18
1
LA SOMMA DI UN ARRAY
ESERCIZIO
Effettuare la somma di
tutti gli elementi di un
array a di n elementi
memorizzandola in una
variabile s
Poi proveremo insieme
l’esecuzione con l’array
a=(5,7,3,1,9,2)
BIOINFO3 - Lezione 18
2
RICERCA IN ARRAY
ESERCIZIO
Ricercare in un array a di n
elementi (tutti diversi) l’indice di
un elemento di valore uguale al
contenuto della variabile v
restituendolo nella variabile p.
(Quindi supponiamo di avere già
le variabili a e v). Se l’elemento
non esiste restituire come
posizione –1.
Poi
proveremo
insieme
l’esecuzione con l’array
a=(5,7,3,1,9,2)
ed elementi v=7 e v=4
BIOINFO3 - Lezione 18
3
ORDINAMENTO DI UN ARRAY
Vediamo ora un algoritmo (semplice, ma non molto efficiente; ne
esistono di “migliori”, che richiedono cioè un numero minore di
operazioni e sono quindi più veloci) per ordinare gli elementi di
un array. Alcuni linguaggi possiedono delle funzioni già
predisposte per questa operazione.
L’algoritmo consiste nello scandire l’intero array dal primo
elemento (posizione 0) al penultimo (posizione n-1) usando una
variabile i come indice. Per ogni posizione i si determina
l’elemento da disporre in quella posizione nell’ordinamento
confrontando l’elemento in posizione i con tutti gli elementi di
posizione successiva. Per questo secondo ciclo si usa un indice j
che varia da i+1 a n. Se l’elemento in posizione j è minore di
quello in posizione i i due elementi vengono scambiati di posto.
BIOINFO3 - Lezione 18
4
ORDINAMENTO
DI UN ARRAY
Provare
su
carta
l’esecuzione passo per
passo dell’algoritmo di
ordinamento con l’array
a=(6,3,5,9,8)
BIOINFO3 - Lezione 18
5
Ordinamento Bucket sort
Prevede l`utilizzo di un array unidimensionale di interi positivi da ordinare, e un
array bidimensionale di interi.
In questo array le righe hanno indici che vanno da 0 a 9 mentre le colonne indici
che vanno da 0 a n-1 (n e` il numero di elementi da ordinare).
Ogni riga del dell`array e` detta bucket o secchiello.
1) Si pone ogni valore dell`array unidimensionale in una riga dell`array di
bucket sulla base della cifra delle unita` presente nel numero. Ad esempio,
97 viene messo alla riga 7, 3 nella riga 3, e 100 nella riga 0.
2) Con un ciclo sulle righe si copiano nuovamente i valori nell`array
originario. (100,3,97).
3) Si ripete il procedimento per ogni sucessiva cifra.
BIOINFO3 - Lezione 18
6
a=(97,3,100)
0
0
1
a=(100,3,97)
2
100
0
0
1
100,
3
1
2
3
1
4
2
0
3,97
1
100
3
3
4
4
5
5
6
6
6
7
7
8
8
8
9
9
97
2
0
5
7
1
2
2
3
a=(100,3,97)
97
9
Risultato finale: a=(3,97,100)
BIOINFO3 - Lezione 18
7
ARRAY ASSOCIATIVI
Siamo sempre in presenza di un array e quindi di un gruppo di
variabili contraddistinte da un nome comune. A differenza degli
array, gli array associativi permettono di identificare i singoli
elementi mediante un nome, anziché un indice numerico
anni
10
12
2
Mario Luigi Andrea
BIOINFO3 - Lezione 18
8
Marta
8
RIFERIMENTI AD ARRAY ASSOCIATIVI
Alcuni linguaggi di programmazione (guarda caso ancora il Perl)
permettono di assegnare i nomi degli indici e i corrispondenti
valori ad un array associativo con una unica operazione del tipo
anni=(´Mario´,10,’Luigi’,12,’Andrea’,2,’Marta’,8)
N.B. Perl riconosce dal nome il tipo di array (lo vedremo)
Per indirizzare le singole celle dell’array si usano le parentesi
grafe { } anziché quelle quadre [ ]
anni{‘Mario’}=4
anni{‘Luigi’}= anni{‘Luigi’}+1
anni {‘Giorgio’}=7
13
2
8
7
anni 4
Mario Luigi Andrea
BIOINFO3 - Lezione 18
Marta
Giorgio
9
ESEMPIO
Leggere da input, fino a quando si incontra la stringa ‘#’, una stringa (il nome
di un prodotto) ed un numero (il prezzo del prodotto). Assegnare alla cella di
un array associativo, avente come indice il nome del prodotto, il prezzo
corrispondente
BIOINFO3 - Lezione 18
10
LISTE
Possiamo pensarle come degli array, i cui elementi non sono
caratterizzati da indici ed in cui è possibile effettuare delle
operazioni standard:
•Inserimento alla fine della lista
•Prelievo del primo elemento
Operazione caratteristica di strutture dati FIFO=FirstInFirstOut
(esempio: CODE)
•Prelievo dell’ultimo elemento
Operazione caratteristica di strutture dati LIFO=LastInFirstOut
(esempio: STACK)
BIOINFO3 - Lezione 18
11
RIEPILOGO
•Array: ricerca massimo
•Array: somma degli elementi
•Array: ricerca di un elemento
•Array: ordinamento
•Array associativi
•Liste
BIOINFO3 - Lezione 18
12
Scarica

bioinfo3