Advertisement
JF_Jaramillo

Punto 3

Feb 2nd, 2021
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.77 KB | None | 0 0
  1. private int[] arreglo10;
  2. private int[] arreglo50;
  3. private int[] arreglo100;
  4. private int[] arreglo500;
  5. private int[] arreglo1000;
  6.  
  7. public void inicializarArreglosOrdenamiento(){
  8.         arreglo10 = new int[10000];
  9.         arreglo50 = new int[50000];
  10.         arreglo100 = new int[100000];
  11.         arreglo500 = new int[500000];
  12.         arreglo1000 = new int[1000000];
  13.         Random generador = new Random();
  14.        
  15.        
  16.         for (int i = 0; i < arreglo10.length; i++) {
  17.             int numeroRandom = generador.nextInt();
  18.             arreglo10[i] = numeroRandom;
  19.            
  20.         }
  21.         for (int i = 0; i < arreglo50.length; i++) {
  22.             int numeroRandom = generador.nextInt();
  23.             arreglo50[i] = numeroRandom;
  24.            
  25.         }
  26.         for (int i = 0; i < arreglo100.length; i++) {
  27.             int numeroRandom = generador.nextInt();
  28.             arreglo100[i] = numeroRandom;
  29.            
  30.         }
  31.         for (int i = 0; i < arreglo500.length; i++) {
  32.             int numeroRandom = generador.nextInt();
  33.             arreglo500[i] = numeroRandom;
  34.            
  35.         }
  36.         for (int i = 0; i < arreglo1000.length; i++) {
  37.             int numeroRandom = generador.nextInt();
  38.             arreglo1000[i] = numeroRandom;
  39.            
  40.         }
  41.     }
  42. public String insertionSort (int[] arreglo){
  43.        
  44.         String conclusion = "";
  45.         int arregloTemporal[] = new int[arreglo.length];
  46.         arregloTemporal = arreglo.clone();
  47.        
  48.         long tiempoInicial = System.currentTimeMillis();
  49.         long contadorComparaciones = 0;
  50.         long contadorAsignaciones = 0;
  51.         long cantidadIntercambios = 0;
  52.        
  53.         contadorAsignaciones++;
  54.         contadorComparaciones++;
  55.         for (int i = 1; i < arregloTemporal.length; ++i) {
  56.        
  57.             int llave = arregloTemporal[i];
  58.             int j = i - 1;
  59.             contadorAsignaciones += 2;
  60.             contadorComparaciones++;
  61.             while (j >= 0 && arregloTemporal[j] > llave) {
  62.                
  63.                 arregloTemporal[j + 1] = arregloTemporal[j];
  64.                 j = j - 1;
  65.                 cantidadIntercambios++;
  66.                 contadorAsignaciones+=3;
  67.                
  68.             }
  69.             arregloTemporal[j + 1] = llave;
  70.             contadorAsignaciones+= 2;
  71.         }
  72.         contadorAsignaciones++;
  73.         long tiempoFinal = System.currentTimeMillis();
  74.         long tiempoEjecucion = tiempoFinal - tiempoInicial;
  75.        
  76.         conclusion += "El arreglo ha sido ordenado satisfactoriamente con el método de Inserción. \n"
  77.                 + "El algoritmo tardó " + tiempoEjecucion + " milisegundos en ejecutarse.\n"
  78.                         + "Realizó: \n" + contadorComparaciones + " comparaciones.\n"
  79.                                 + contadorAsignaciones + " asignaciones. \n"
  80.                                     + cantidadIntercambios + " intercambios. \n";
  81.        
  82.         return conclusion;
  83.        
  84.     }
  85.    
  86.     public String quicksort(int[] arreglo, int izquierda, int derecha) {
  87.        
  88.         String conclusion = "";
  89.         int arregloTemporal[] = new int[arreglo.length];
  90.         arregloTemporal = arreglo.clone();
  91.         long tiempoInicial = System.currentTimeMillis();
  92.         long contadorComparaciones = 0;
  93.         long contadorAsignaciones = 0;
  94.         long cantidadIntercambios = 0;
  95.         int pivote=arregloTemporal[izquierda];
  96.         contadorAsignaciones++;
  97.         int i=izquierda;      
  98.         int j=derecha;
  99.         contadorAsignaciones += 2;
  100.         int aux;
  101.        
  102.         while(i < j){
  103.             contadorComparaciones++;
  104.            while(arregloTemporal[i] <= pivote && i < j) {
  105.                i++;
  106.                contadorComparaciones++;
  107.            }
  108.            while(arregloTemporal[j] > pivote) {
  109.                j--;
  110.                contadorComparaciones++;
  111.            }          
  112.            if (i < j) {  
  113.                contadorComparaciones++;
  114.                contadorAsignaciones += 2;
  115.                aux= arreglo[i];                    
  116.                arregloTemporal[i]=arregloTemporal[j];
  117.                arregloTemporal[j]=aux;
  118.                cantidadIntercambios += 1;
  119.            }
  120.    }
  121.         long tiempoFinal = System.currentTimeMillis();
  122.         long tiempoDeEjecucion = tiempoFinal - tiempoInicial;
  123.        
  124.         conclusion += "El arreglo ha sido ordenado satisfactoriamente con el método de Quick Sort. \n"
  125.                 + "El algoritmo tardó " + tiempoDeEjecucion + " milisegundos en ejecutarse.\n"
  126.                         + "Realizó: \n" + contadorComparaciones + " comparaciones.\n"
  127.                                 + contadorAsignaciones + " asignaciones. \n"
  128.                                         + cantidadIntercambios + " intercambios. \n";
  129.        
  130.         return conclusion;
  131.     }
  132.    
  133.     public String selectionSort(int arreglo[]) {
  134.        
  135.         String conclusion = "";
  136.         int arregloTemporal[] = new int[arreglo.length];
  137.         arregloTemporal = arreglo.clone();
  138.         long tiempoInicial = System.currentTimeMillis();
  139.         long contadorComparaciones = 0;
  140.         long contadorAsignaciones = 0;
  141.         long cantidadIntercambios = 0;
  142.         int n = arregloTemporal.length;
  143.         contadorAsignaciones++;
  144.  
  145.  
  146.         for (int i = 0; i < n-1; i++) {
  147.             contadorComparaciones++;
  148.             int minimo = i;
  149.             contadorAsignaciones++;
  150.             for (int j = i+1; j < n; j++) {
  151.                 contadorComparaciones++;
  152.                if (arregloTemporal[j] < arregloTemporal[minimo]){
  153.                    contadorComparaciones++;
  154.                    minimo = j;  
  155.                    contadorAsignaciones++;
  156.                }
  157.             }
  158.             int temporal = arregloTemporal[minimo];
  159.             contadorAsignaciones++;
  160.             arregloTemporal[minimo] = arregloTemporal[i];
  161.             cantidadIntercambios++;
  162.             arregloTemporal[i] = temporal;
  163.             contadorAsignaciones++;
  164.         }
  165.         long tiempoFinal = System.currentTimeMillis();
  166.         long tiempoEjecucion = tiempoFinal - tiempoInicial;
  167.        
  168.         conclusion += "El arreglo ha sido ordenado satisfactoriamente con el método de Selección. \n"
  169.                 + "El algoritmo tardó " + tiempoEjecucion  + " milisegundos en ejecutarse.\n"
  170.                         + "Realizó: \n" + contadorComparaciones + " comparaciones.\n"
  171.                                 + contadorAsignaciones + " asignaciones. \n"
  172.                                         + cantidadIntercambios + " intercambios. \n";
  173.        
  174.         return conclusion;
  175.     }
  176.  
  177. case 3:
  178.                     inicializarArreglosOrdenamiento();
  179.                     char ordenamiento = ' ';
  180.                     do{
  181.                       String subMenuOrdenamiento = JOptionPane.showInputDialog("Bienvenido al submenú de ordenamiento. Aquí haremos pruebas de rendimiento sobre arreglos de distinos tamaños con 3 métodos diferentes de ordenamiento (Inserción, Selección y Quick Sort).\n"
  182.                             + "Por favor que tamaño de arreglo desea probar bajo los 3 métodos anteriormente seleccionados:\n"
  183.                             + "a. Arreglo de 10.000 posiciones.\n"
  184.                             + "b. Arreglo de 50.000 posiciones. \n"
  185.                             + "c. Arreglo de 100.000 posiciones. \n"
  186.                             + "d. Arreglo de 500.000 posiciones. \n"
  187.                             + "e. Arreglo de 1'000.000 posiciones. \n"
  188.                             + "f. Salir del submenú de ordenamiento." );
  189.                     subMenuOrdenamiento = subMenuOrdenamiento.trim();
  190.                     ordenamiento = subMenuOrdenamiento.charAt(0);
  191.                     switch(ordenamiento){
  192.                         case 'a': JOptionPane.showMessageDialog(null, insertionSort(arreglo10) +
  193.                                 selectionSort(arreglo10) +
  194.                                 quicksort(arreglo10, 0, arreglo10.length - 1));
  195.                         break;
  196.                         case 'b':
  197.                             JOptionPane.showMessageDialog(null, insertionSort(arreglo50) +
  198.                                 selectionSort(arreglo50) +
  199.                                 quicksort(arreglo50, 0, arreglo50.length - 1));
  200.                             break;
  201.                         case 'c':
  202.                             JOptionPane.showMessageDialog(null, insertionSort(arreglo100) +
  203.                                 selectionSort(arreglo100) +
  204.                                 quicksort(arreglo100, 0, arreglo100.length - 1));
  205.                             break;
  206.                         case 'd':
  207.                             JOptionPane.showMessageDialog(null, insertionSort(arreglo500) +
  208.                                 selectionSort(arreglo500) +
  209.                                 quicksort(arreglo500, 0, arreglo500.length - 1));
  210.                             break;
  211.                         case 'e':
  212.                             JOptionPane.showMessageDialog(null, insertionSort(arreglo1000) +
  213.                                 selectionSort(arreglo1000) +
  214.                                 quicksort(arreglo1000, 0, arreglo1000.length - 1));
  215.                             break;
  216.                         case 'f':
  217.                             JOptionPane.showMessageDialog(null, "Está saliendo del submenú de ordenamiento. Gracias por utilizar nuestros servicios.");
  218.                             break;
  219.                         default: JOptionPane.showConfirmDialog(null, "Opción Incorrecta. Por favor intente de nuevo.", "Opción Incorrecta", JOptionPane.ERROR_MESSAGE);
  220.                        
  221.                     }  
  222.                     }while (ordenamiento != 'f');
  223.                    
  224.                            
  225.                     break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement