Foros del Web » Programación para mayores de 30 ;) » Java »

Un poco de teoría [arrays]

Estas en el tema de Un poco de teoría [arrays] en el foro de Java en Foros del Web. Hola foreros, ahora os traigo un poco de teoría sobre ordenamiento de arrays, yo aquí solo pongo unos pocos métodos de ordenación. Bueno, antes de ...
  #1 (permalink)  
Antiguo 18/08/2013, 12:31
Avatar de Krain  
Fecha de Ingreso: julio-2013
Ubicación: Valencia
Mensajes: 60
Antigüedad: 10 años, 8 meses
Puntos: 1
Un poco de teoría [arrays]

Hola foreros, ahora os traigo un poco de teoría sobre ordenamiento de arrays, yo aquí solo pongo unos pocos métodos de ordenación.
Bueno, antes de empezar con los ordenamientos pondré rápidamente unos métodos sencillos para búsqueda de valores.



Buscar mayor elemento y su posición en el array.
Código Java:
Ver original
  1. public void mayorElemento()
  2. {
  3.     int pos = 0;
  4.     int mayor = array[0];    
  5.     for(int i = 1; i < array.length; i++)
  6.     {
  7.         if (array[i] > mayor)
  8.         {
  9.             mayor = array[i];
  10.             pos = i;
  11.         }
  12.     }
  13. }

Buscar menor elemento y su posición en el array.
Código Java:
Ver original
  1. public void menorElemento()
  2. {
  3.     int pos = 0;
  4.     int menor = array[0];    
  5.     for(int i = 1; i < array.length; i++)
  6.     {
  7.         if (array[i] < menor)
  8.         {
  9.             menor = array[i];  
  10.             pos = i;          
  11.         }
  12.     }
  13. }

Calcular la media del array y ver cuantos valores hay mayores y menores.
Código Java:
Ver original
  1. public void media()
  2. {
  3.     float media = 0;
  4.     int mayor = 0;
  5.     int menor = 0;
  6.     for(int i = 0; i < array.length; i++)
  7.     {
  8.         media = media + array[i];
  9.     }
  10.     media = media / array.length;
  11.     for(int i = 0; i < array.length; i++)
  12.     {
  13.         if (array[i] >= media)
  14.         {
  15.             mayor++;
  16.         }
  17.         else
  18.         {
  19.             menor++;
  20.         }
  21.     }        
  22.     System.out.println("Media del array:" + media);
  23.     System.out.println("Elementos mayores o iguales a la media: " + mayor);
  24.     System.out.println("Elementos menores a la media: " + menor);
  25. }



Ahora si los ordenamientos

Ordenamiento de tipo burbuja (Bubblesort)
Código Java:
Ver original
  1. public void ordenamientoBurbuja()
  2. {
  3.     int array[] = {7,2,0,9,8,1,3,5,6,4};
  4.     for(int i = 0; i < array.length; i++)
  5.     {
  6.         for (int j = i+1; j < array.length; j++)
  7.         {
  8.             if(array[j] <  array[i])
  9.             {
  10.                 int aux = array[i];
  11.                 array[i] = array[j];
  12.                 array[j] = aux;                  
  13.             }
  14.         }
  15.     }
  16. }

Ordenamiento de burbuja bidireccional (bidirectional bubble sort o Cocktail sort)
Código Java:
Ver original
  1. public void cocktailSort()
  2. {
  3.     int izquierda;
  4.     int derecha;
  5.     int ultimo = array.length;
  6.     do
  7.     {
  8.         for(int i = array.length -1; i > 0; i--)
  9.         {
  10.             if(array[i-1] > array[i])
  11.             {
  12.                 int aux = array[i];
  13.                 array[i] = array[i-1];
  14.                 array[i-1] = aux;
  15.                 ultimo = i;
  16.             }
  17.         }
  18.         izquierda = ultimo +1;
  19.         for(int j = 1; j < array.length; j++)
  20.         {
  21.             if(array[j-1] > array[j])
  22.             {
  23.                 int aux = array[j];
  24.                 array[j] = array[j-1];
  25.                 array[j-1] = aux;
  26.                 ultimo = j;
  27.             }
  28.         }
  29.         derecha = ultimo -1;
  30.     }
  31.     while(derecha >= izquierda);
  32. }

Ordenamiento por insercción (Insertion sort)
Código Java:
Ver original
  1. public void ordenamientoInserccion()
  2. {
  3.     int aux;
  4.     for (int i = 0; i < array.length; i++)
  5.     {
  6.         aux = array[i];
  7.         for (int j = i-1; j >= 0 && aux < array[j]; j--)
  8.         {
  9.             array[j+1]  = array[j];
  10.             array[j] = aux;
  11.         }        
  12.     }
  13. }

Ordenamiento por selección (Selection sort)
Código Java:
Ver original
  1. public void ordenamientoSeleccion()
  2. {
  3.     for (int i = 0; i < array.length; i++)
  4.     {
  5.         int valorMinimo = array[i];
  6.         int indexMinimo = i;
  7.         for (int j = i+1; j < array.length; j++)
  8.         {
  9.             if (valorMinimo > array[j])
  10.             {
  11.                 valorMinimo = array[j];
  12.                 indexMinimo = j;
  13.             }
  14.         }        
  15.         array[indexMinimo] = array[i];
  16.         array[i] = valorMinimo;
  17.     }
  18. }

Ordenamiento shell (Shell sort)
Código Java:
Ver original
  1. public void ordenamientoShell()
  2. {
  3.     int incremento = array.length;
  4.     do
  5.     {
  6.         incremento = incremento / 2;
  7.         for (int i = 0; i < incremento; i++)
  8.         {
  9.             for (int j = incremento+i; j < array.length; j += incremento)
  10.             {
  11.                 int k = j;
  12.                 while (k - incremento >= 0 && array[k] < array[k - incremento])
  13.                 {
  14.                     int aux = array[k];
  15.                     array[k] = array[k - incremento];
  16.                     array[k - incremento] = aux;
  17.                     k -= incremento;
  18.                 }
  19.             }
  20.         }
  21.     }
  22.     while (incremento > 1);
  23. }

Ordenamiento rápido (Quicksort)
Código Java:
Ver original
  1. public static void quicksort(int array[], int izquierda, int derecha)
  2. {
  3.     int pivote = array[izquierda];
  4.     int i = izquierda;
  5.     int j = derecha;
  6.     int aux;
  7.     while(i < j)
  8.     {
  9.         while(array[i] <= pivote && i < j)
  10.             i++;
  11.         while(array[j] > pivote)
  12.             j--;
  13.         if (i < j)
  14.         {
  15.             aux = array[i];
  16.             array[i] = array[j];
  17.             array[j] = aux;
  18.         }
  19.     }
  20.     array[izquierda] = array[j];
  21.     array[j] = pivote;
  22.     if(izquierda < j-1)
  23.         quicksort(array, izquierda, j-1);
  24.     if(j+1 < derecha)
  25.         quicksort(array, j+1, derecha);
  26. }
  27. public static void main(String[]args)
  28. {
  29.     quicksort(array,0,array.length -1);
  30.     for(int i = 0; i < array.length; i++)
  31.         System.out.print(array[i] + " ");
  32. }

Etiquetas: poco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:24.