PROGRAMACION DE ALGORITMOS
Definicin de Arreglo
Un arreglo o array es un conjunto de datos ordenados que est formado por un nmero fijo de elementos contiguos y de un mismo tipo, por lo cual son estructuras estticas. Los datos individuales que se encuentran en el arreglo se llaman elementos del arreglo. Para definir un tipo estructurado arreglo, se debe especificar el tipo base y el nmero de elementos. Los arreglos se clasifican en: Unidimensionales (vectores o listas) Multidimensionales ( tablas o matrices)
A los arreglos se los declara de la siguiente manera: Tipo_dato nombre_array[ ] Ejemplo:int meses_anio ]; Se inicializa de la siguiente manera: nombre_array = tipo_dato [tamao] Ejemplo : meses _anio= new String [12]; Se accede al arreglo de la siguiente manera: Nombre_array[ posicin]
Mtodos Directos
Mtodo de Insercin Directa
Este mtodo consiste en revisar cada elemento del arreglo que vaya a ser ordenado con el siguiente, intercambindose de posicin si estn en el orden equivocado. Es necesario en este mtodo revisar varias veces todo el arreglo hasta que no se necesiten ms intercambios, lo que significa que el arreglo esta ordenado completamente. Este nombre de burbuja se dice por la forma con la que suben por los elementos de los arreglos durante los intercambios, como si fueran pequeas "burbujas". Tambin es conocido como el mtodo del intercambio directo, ya que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparacin siendo el ms sencillo de usar.
public void selecciondirecta(int n) { int i,j,min,k; int cambio; for(i=0;i<n;i++) { min=arr[i]; k=0; cambio=0; for(j=i+1;j<n;j++) { if (arr[ j ]<min) { min=arr[ j ]; k=j; cambio=1;} } if (cambio ) { arr[ k ]=arr[ i ]; arr[ i ]=min; } } }
int i,j,aux; Se da valores a los elementos del arreglo for(i=1;i { // Se intenta aadir el elemento i. aux=array[i]; for(j=i-1;j>=0;j--) // Se recorre la sublista de atrs a adelante para buscar { // la nueva posicin del elemento i. if(aux>array[j]) // Si se encuentra la posicin: { array[j+1]=aux; // Colocarlo break; // y colocar el siguiente nmero. } else // si no, sigue buscndola. array[j+1]=array[j]; } if(j==-1) // si se ha buscado en todas las posiciones y no se ha encontrado la correcta array[0]=aux; // es que la posicin es al principio del todo. }
Mtodo de Seleccin Directa / QuickSort a partir de la solucin de Este mtodo consiste en resolver un problema
subproblemas del mismo tipo, pero de menor tamao. Si los subproblemas son todava relativamente grandes se aplicar de nuevo esta tcnica hasta alcanzar subproblemas lo suficientemente pequeos para ser solucionados directamente. Se plantea el problema de forma que pueda ser descompuesto en k subproblemas del mismo tipo, pero de menor tamao. Es decir, si el tamao de la entrada es n, hemos de conseguir dividir el problema en k subproblemas, cada uno con una entrada de tamao nk y donde 0 nk < n. A esta tarea se le conoce como divisin. Se resuelven independientemente todos los subproblemas. El tamao de los subproblemas debe ser menor que el tamao original del problema. Finalmente se deben combinar las soluciones obtenidas anteriormente para construir la solucin del problema original.
Mtodos Avanzados
blic void quicksort (int[] a, int izq, int der) { int i = izq; int j =der; int pivote = a[ (izq + der) / 2]; do{ while (a[ i ] < pivote) { i++ } while ( a[ j ]> pivote) { j } if (i <= j) { int aux = a[ i ]; a[ i ] = a[ j ]; a[ j ] = aux; i++; j--; } } while (i <= j); if (izq < j) { quicksort(a, izq, j); } if (i < der) { quicksort(a, i, der); } }