Ordinamento 1 Algoritmi di ordinamento ! Selection Sort ! Quick Sort ! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 2 Selection Sort ! L’elemento minimo viene messo in posizione 0 ! Si itera il procedimento sulle posizioni successive SelectionSort(dati[]) { for (i=0; i<dati.length-1; i++) { min = <Seleziona min. in dati[i], …. , dati[dati.length-1]> <Scambia min con dati[i]; } }
13
Embed
Selection Sort - Dipartimento di Ingegneria informatica ...becchett/algo/slide/parte3.pdf · Come ordinare oggetti diversi da numeri! ... Ordinamento 6 Come ordinare ... Dati ai,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Ordinamento 1
Algoritmi di ordinamento
! Selection Sort
! Quick Sort
! Lower bound alla complessità deglialgoritmi di ordinamento
Ordinamento 2
Selection Sort
! L’elemento minimo viene messo in posizione 0
! Si itera il procedimento sulle posizioni successive
SelectionSort(dati[]) {
for (i=0; i<dati.length-1; i++) {
min = <Seleziona min. in dati[i], …. ,dati[dati.length-1]>
<Scambia min con dati[i];
}
}
Ordinamento 3
Selection Sort/2
! Versione ricorsiva
SelectionSort(dati[], i) {
min = <Seleziona min. in dati[i], …. ,
dati[dati.length-1]>
<Scambia min con dati[i];
SelectionSort(dati[], i+1) ;
}
……
SelectionSort(dati[], 0) ;
Ordinamento 4
Selection Sort/3
Ordinamento del vettore di interi {5, 2, 3, 8, 1}
Ordinamento 5
Come ordinare oggetti diversi da numeri
! Ordinare un vettore i cui elementi sono oggetticomplessi. Es. oggetti della classe:
class Persona {
String cognome;
String CF;
public Persona (String cognome, String CF) {
this.cognome = cognome;
this.CF = CF;
}
}
! Come ordinare un array di tali oggetti rispetto alcognome ?
Ordinamento 6
Come ordinare oggetti diversi danumeri/2
! Occorre:1. Dichiarare che tra gli oggetti della classe (Persona
nell’esempio) è definito un ordinamento
2. Dichiarare rispetto a quale o a quali membri della classe èdefinito l’ordinamento (il cognome nel nostro caso)
3. Definire la regola che stabilisce l’ordinamento tra dueoggetti della classe (nel nostro caso: due oggetti di tipopersona sono ordinati alfabeticamente secondo i rispettivicognomi)
! In C++ si possono sovraccaricare gli operatori
! In Java si può dichiarare che la classe (Persona)implementa l’interfaccia Comparable (non è la solapossibilità)
Ordinamento 7
Come ordinare oggetti diversi danumeri/3
! Il passo 1 si traduce così:class Persona implements Comparable {
……
}
! I passi 2 e 3 consistono nell’implementare l’unicometodo previsto dall’interfaccia Comparable:
int compareTo(Object o)
! compareTo definisce le regole che stabilisconol’ordinamento tra oggetti della classe (nel nostrocaso, l’ordinamento è quello alfabetico sui cognomi)