//******************************************************************** // Ordina.java // // Algoritmi di ordinamento per selezione e inserzione, // e un ordinamento generico per oggetti. //******************************************************************** public class Ordina { //----------------------------------------------------------------- // Ordina l'array specificato mediante l'algoritmo di // ordinamento per selezione. //----------------------------------------------------------------- public static void selectionSort (int[] numeri) { int min, temp; for (int index = 0; index < numeri.length-1; index++) { min = index; for (int scan = index+1; scan < numeri.length; scan++) if (numeri[scan] < numeri[min]) min = scan; // Scambia i valori tra la posizione corrente e quella in cui c'e' il min temp = numeri[min]; numeri[min] = numeri[index]; numeri[index] = temp; } } //----------------------------------------------------------------- // Ordina l'array specificato mediante l'algoritmo di // ordinamento per inserzione. //----------------------------------------------------------------- public static void insertionSort (int[] numeri) { for (int i = 1; i < numeri.length; i++) { int key = numeri[i]; int pos = i; // slitta i valori pił grandi sulla destra while (pos > 0 && numeri[pos-1] > key) { numeri[pos] = numeri[pos-1]; pos--; } numeri[pos] = key; } } //----------------------------------------------------------------- // Ordina l'array specificato, di oggetti che implementano // l'interfaccia Comparable, mediante l'algoritmo di // ordinamento per inserzione. //----------------------------------------------------------------- public static void insertionSort (Comparable[] oggetti) { for (int i = 1; i < oggetti.length; i++) { Comparable key = oggetti[i]; int pos = i; // slitta i valori piu' grandi a destra while (pos > 0 && oggetti[pos-1].compareTo(key) > 0){ oggetti[pos] = oggetti[pos-1]; pos--; } oggetti[pos] = key; } } }