Estratto del documento

Algoritmi per ordinare un insieme di numeri

Analizziamo gli algoritmi per ordinare un insieme di numeri (interi) memorizzato in un array. Prendiamo in esame un array a da ordinare in senso crescente.

Passaggi per ordinare un array

  • Per prima cosa, bisogna trovare l’elemento dell’array contenente il valore minimo (in a[3]), questo caso è il numero 5 in posizione a[0].
  • Essendo l’elemento minore, la sua posizione corretta nell’array ordinato è a[0].
  • In a[0] è memorizzato il numero 11, da spostare. Non sappiamo quale sia la posizione corretta di 11 ma lo spostiamo temporaneamente in a[3].
  • Scambiamo a[0] con a[3]. La parte sinistra dell’array è già ordinata e non sarà più considerata.
  • Ordiniamo la parte destra con lo stesso algoritmo: cerchiamo l’elemento contenente il valore minimo, che è il numero 9 in posizione a[1].
  • Dato che è già nella prima posizione della parte da ordinare (a[1]), non c’è bisogno di fare scambi.
  • Ordiniamo il resto dell’array con lo stesso algoritmo. Ad un certo punto la parte da ordinare contiene un solo elemento, quindi è ovviamente ordinata.

Implementazione della classe ArrayAlgs

Scriviamo la classe ArrayAlgs che conterrà le realizzazioni dei vari algoritmi di ordinamento e ricerca da noi studiati.

Esempio di codice: Selection Sort

public static void selectionSort(int[] v, int vSize) {
    for (int i = 0; i < vSize - 1; i++) {
        int minPos = findMinPos(v, i, vSize-1);
        if (minPos != i) swap(v, minPos, i);
    }
}

// abbiamo usato due metodi ausiliari, swap e findMinPos
private static void swap(int[] v, int i, int j) {
    int temp = v[i];
    v[i] = v[j];
    v[j] = temp;
}

private static int findMinPos(int[] v, int from, int to) {
    int pos = from;
    int min = v[from];
    for (int i = from + 1; i <= to; i++) {
        if (v[i] < min) {
            pos = i;
            min = v[i];
        }
    }
    return pos;
}
Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - ordinamento per selezione Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enricopava di informazioni apprese con la frequenza delle lezioni di Informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Avanzini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community