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) {
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) {
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); } }