/////////////////////////////////////////////////////////////////7 // ORDINAMENTO array // algoritmi di "bubble sort" e "merge sort" import java.util.Scanner; public class OrdinamentoArray { public static Scanner input = new Scanner(System.in); public static void leggiArray(int a[]){ System.out.println("Inserire " + a.length + " numeri interi, elementi di un array"); for (int i=0; i < a.length; i++) a[i] = input.nextInt(); } public static void scriviArray(int a[]){ for (int i=0; i < a.length; i++) System.out.print( a[i] + " " ); System.out.println(); } public static void copiaArray( int source[], int destination[]) { for (int i = 0; i < source.length; i++) destination[i] = source[i]; } public static void scambiaElementi (int v[], int i, int j) { int temp = v[i]; v[i] = v[j]; v[j] = temp; } public static void bubbleSort ( int a[] ) { boolean scambi = true; int border = a.length - 1; while ( scambi && border > 0 ) { scambi = false; for ( int j = 0; j < border; j++) { if (a[j] < a[j+1]) { scambiaElementi(a,j,j+1); scambi = true; } } border--; } } public static void mergeSort (int a[], int inf, int sup) { if ( inf < sup ) { int middle = ( inf + sup ) / 2; mergeSort(a, inf, middle); mergeSort(a, middle+1, sup); merge(a, inf, middle, sup); } } public static void merge (int a[], int inf, int middle, int sup ) { int temp [] = new int [a.length]; int i = inf; int j = middle + 1; int k = inf; while ( i <= middle && j <= sup) { if (a[i] < a[j]) temp[k] = a[i++]; else temp[k] = a[j++]; k++; } while ( i <= middle ) { temp[k] = a[i]; i++; k++; } while ( j <= sup ) { temp[k] = a[j]; j++; k++; } for (i = inf; i <= sup; i++) a[i] = temp[i]; } public static void main(String[] args) { System.out.println(" Inserire un array di numeri interi."); System.out.println(" Quanti elementi conterra' l'array? "); int v[] = new int[input.nextInt()]; leggiArray(v); int v1[] = new int[v.length]; int v2[] = new int[v.length]; copiaArray(v,v1); copiaArray(v,v2); System.out.println(" L'array ordinato con l'algoritmo bubble sort e' il seguente.. "); mergeSort(v1, 0, v1.length-1); scriviArray(v1); System.out.println(" L'array ordinato con l'algoritmo merge sort (ricorsivo) e' il seguente.. "); mergeSort(v2, 0, v2.length-1); scriviArray(v2); } }