Está en la página 1de 2

import java.util.

InputMismatchException;
import java.util.Random;
import java.util.Scanner;

public class AlgQuick {


public static int max;
public int arrs[];
public int temporal;
public static Scanner sc = new Scanner(System.in);
public static long intercambios = 0;
public static long comparaciones = 0;

public AlgQuick() { // constructor


this.arrs = new int[max];
}

public void quickSort(int[] arreglo, int bajo, int alto) {


if (bajo < alto) {
int indicePivote = particion(arreglo, bajo, alto);
quickSort(arreglo, bajo, indicePivote - 1);
quickSort(arreglo, indicePivote + 1, alto);
}
}

public int particion(int[] arreglo, int bajo, int alto) {


int pivote = arreglo[alto];
int i = bajo - 1;
for (int j = bajo; j < alto; j++) {
comparaciones++;
if (arreglo[j] <= pivote) {
i++;
intercambios++;
intercambiar(arreglo, i, j);
}
}
intercambios++;
intercambiar(arreglo, i + 1, alto);
return i + 1;
}

public void intercambiar(int[] arreglo, int i, int j) {


temporal = arreglo[i];
arreglo[i] = arreglo[j];
arreglo[j] = temporal;
}

public static int aleatorioNum() { // numeros aleatorios


return new Random().nextInt(10000 + 1);
}

public void showArray(int[] array) {


for (int i = 0; i < AlgQuick.max; i++) {
System.out.println(array[i]);
}
}

public static int capEnteros(String mensaje) { // captura y validacion de


enteros
boolean continuar;
int n = 0;
do {
continuar = false;
try {
System.out.print(mensaje);
n = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("\n\tHay un error: " + e);
System.out.println("\n\tIngresar un numero entero");
sc.next();
continuar = true;
}
} while (continuar);
return n;
}
}
-----------------------------------------------------------------------------------
----------------------------------------------------

import java.text.DecimalFormat;

public class AlgoritmoEficiencia {


public static void main(String[] args) throws Exception {
DecimalFormat df = new DecimalFormat("#0.0000000");
AlgQuick.max =AlgQuick.capEnteros("\n\tDe que tamanio sera tu arreglo? ");
System.out.println("");
AlgQuick arr = new AlgQuick();
for(int i = 0; i <AlgQuick.max; i++) {
arr.arrs[i] = AlgQuick.aleatorioNum();
}

System.out.println("El arreglo original");


arr.showArray(arr.arrs);
long startTime = System.nanoTime();
arr.quickSort(arr.arrs, 0, (AlgQuick.max) - 1);
long endTime = System.nanoTime();
long time = (endTime - startTime);
double tiempo = (double)time/1000000;

System.out.println("El arreglo oredenado");


arr.showArray(arr.arrs);
System.out.println("el teimpo de ejecucion del metodo " + df.format(tiempo)
+ " ms");
System.out.println("Número de comparaciones: " + AlgQuick.comparaciones);
System.out.println("Número de intercambios: " + AlgQuick.intercambios);
}
}

También podría gustarte