Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Esercitazione1;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.PrintStream;
- import java.util.Arrays;
- import java.util.Random;
- public class OrdinaArray {
- /*
- * Algoritmo bubblesort per l'ordinamento di un array di interi A
- * usando come relazione d'ordine totale "<="
- * @param A array passato all'algoritmo che deve essere ordinato
- */
- static int bubblesort(int A[]){
- int numeroConfronti=0;
- for(int i = 1; i <= A.length - 1; i++) {
- boolean scambiAvvenuti = false;
- for(int j = 1; j <= A.length - 1; j++) {
- numeroConfronti = numeroConfronti + 1;
- if( A[j] <= A[j - 1] ) {
- swap(A, j-1, j);
- scambiAvvenuti = true;
- }
- }
- if (!scambiAvvenuti) {
- break;
- }
- }
- return numeroConfronti;
- }
- /*
- * Algoritmo selectionsort per l'ordinamento di un array di interi A
- * usando come relazione d'ordine totale "<="
- * @param A
- */
- static int selectionsort(int A[]) {
- int numeroConfronti = 0;
- for (int k = -1; k <= A.length - 2; k++) {
- int min = k + 1;
- for (int j = k + 2; j <= A.length - 1; j++) {
- if (A[j] < A[min]) {
- min = j;
- }
- numeroConfronti = numeroConfronti + 1;
- }
- if (min != k + 1) {
- swap(A, min, k + 1);
- }
- }
- return numeroConfronti;
- }
- /*
- * algoritmo insertionsort per l'ordinamento di un array di interi A
- * usando come relazione d'ordine totale "<="
- * @param A
- */
- static int insertionsort(int A[]) {
- int numeroConfronti = A.length;
- int min = 0;
- for (int i = 1; i < A.length - 1; i++) {
- if (A[i] < A[min]) {
- min = i;
- }
- }
- swap(A, min, 0);
- for (int k = 1; k <= A.length - 2; k++) {
- int x = A[k + 1];
- int j;
- for (j = k; j >= 1; j--) {
- numeroConfronti = numeroConfronti + 1;
- if (A[j] <= x) {
- break;
- }
- }
- for (int h = k; h >= j + 1; h--) {
- // shift a destra
- A[h + 1] = A[h];
- }
- A[j + 1] = x;
- }
- return numeroConfronti;
- }
- /*
- * Inizializza l'array di interi A con numeri interi generati in maniera casuale
- * con valore tra 1 e A.length
- * @param A
- */
- static void inizializzaArrayCasuale(int A[]){
- Random g = new Random();
- for (int i = 1; i < A.length; i++) {
- int casuale = g.nextInt(A.length) + 1;
- A[i] = casuale;
- }
- }
- /*
- * Inizializza l'array di interi A con i numeri interi 1, 2, 3,..., A.length
- * @param A
- */
- static void inizializzaArrayCrescente(int A[]){
- for (int i = 0; i < A.length; i++) {
- A[i] = i + 1;
- }
- }
- /*
- * Inizializza l'array di interi A con numeri interi A.length, A.length-1,...,2, 1
- * @param A
- */
- static void inizializzaArrayDecrescente(int A[]){
- int n = A.length;
- for (int i = 0; i < A.length; i++) {
- A[i] = n;
- n--;
- }
- }
- /*
- * Stampa gli elementi contenuti nell'array A
- * @param A
- */
- static void stampaArray(int A[]){
- for (int i = 0; i < A.length; i++) {
- System.out.print(A[i] + " ");
- }
- }
- private static void swap(int A[], int a, int b) {
- int tmp = A[a];
- A[a] = A[b];
- A[b] = tmp;
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- int maxDim, step;
- int contatore;
- maxDim=new Integer(args[0]).intValue();
- step=new Integer(args[1]).intValue();
- try {
- FileOutputStream file = new FileOutputStream("statistica.csv");
- PrintStream Output = new PrintStream(file);
- Output.println("dimArray; " +
- "BubbleNroConfrontiCasuale; BubbleNroConfrontiCrescenti; BubblenroConfrontiDecrescente; " +
- "SelectionNroConfrontiCasuale; SelectionNroConfrontiCrescenti; SelectionNroConfrontiDecrescente;");
- for(int i=step; i <= maxDim; i += step)
- {
- int A[]=new int[i];
- String outString = "";
- inizializzaArrayCasuale(A);
- int copy[] = Arrays.copyOf(A, A.length);
- System.out.println("Array di dimensione " + i + " ordinato con BUBBLESORT");
- outString += String.valueOf(i) + ";";
- System.out.println("***************************************************");
- System.out.println("Uso del generatore di numeri casuali");
- stampaArray(A);
- contatore=bubblesort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- outString += contatore + ";";
- stampaArray(A);
- System.out.println("");
- inizializzaArrayCrescente(A);
- stampaArray(A);
- contatore=bubblesort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- outString += contatore + ";";
- stampaArray(A);
- System.out.println("");
- inizializzaArrayDecrescente(A);
- stampaArray(A);
- contatore=bubblesort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- outString += contatore;
- stampaArray(A);
- System.out.println("");
- //SELECTION
- System.out.println("\n");
- System.out.println("Array di dimensione " + i + " ordinato con SELECIONSORT");
- System.out.println("***************************************************");
- System.out.println("Uso del generatore di numeri casuali");
- A = Arrays.copyOf(copy, copy.length);
- stampaArray(A);
- contatore = selectionsort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- stampaArray(A);
- System.out.println("");
- inizializzaArrayCrescente(A);
- stampaArray(A);
- contatore = selectionsort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- stampaArray(A);
- System.out.println("");
- inizializzaArrayDecrescente(A);
- stampaArray(A);
- contatore = selectionsort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- stampaArray(A);
- System.out.println("\n");
- //INSERTION
- System.out.println("\n");
- System.out.println("Array di dimensione " + i + " ordinato con INSERTIONSORT");
- System.out.println("***************************************************");
- System.out.println("Uso del generatore di numeri casuali");
- A = Arrays.copyOf(copy, copy.length);
- stampaArray(A);
- contatore = insertionsort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- stampaArray(A);
- System.out.println("");
- inizializzaArrayCrescente(A);
- stampaArray(A);
- contatore = insertionsort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- stampaArray(A);
- System.out.println("");
- inizializzaArrayDecrescente(A);
- stampaArray(A);
- contatore = insertionsort(A);
- System.out.print(": " + contatore + " confronti per ottenere ");
- stampaArray(A);
- System.out.println("\n");
- Output.println(outString);
- }
- Output.close();
- } catch(IOException e) {
- System.out.println("Errore: " + e);
- System.exit(1);
- }
- }
- }
Add Comment
Please, Sign In to add comment