Está en la página 1de 11

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

PROGRAMACION DE ALGORITMOS

POR: Eylin Caldern Carrin.


II Ciclo Sistemas Informticos y Computacin

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)

Declaracin, inicializacin y
acceso
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]
Ejemplo: meses[0] = Enero; meses[5] = Junio;

Clasificacin de los Mtodos de


Ordenacin de Arreglos
MTODOS DIRECTOS:

Mtodo de Intercambio Directo / Burbuja


Mtodo de Insercin Directa
Mtodo de Seleccin Directa
MTODOS AVANZADOS
Mtodo de ordenacin rpida / QuickSort

Mtodos
Directos
Mtodo de Intercambio Directo /
Burbuja
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
public void
burbuja
(int sencillo
[] a){ de usar.
algoritmo de comparacin
siendo
el ms
for (int i=a.length-1; i>0; i--)
for(int j=0; j<i; j++)
if (a[ j ] > a[ j+1 ] ){
int temp = a[ j ]; a[ j ]= a[ j+1 ];
a[ j+1 ] = temp;
}
}

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

Mtodos Directos
Mtodo de Seleccin Directa
Este mtodo consiste en recorrer un arreglo desde la primera posicin
hasta n-1, en cada ves que se recorre se busca encontrar el elemento
ms pequeo, de tal forma que despus de la primera ves en la
posicin 0 este el elemento ms pequeo de todo el arreglo; en la
segunda ves el segundo elemento ms pequeo y as sucesivamente
hasta
ordenar
todos
los
elementos.
Este mtodo no es el ms eficiente, pero es uno de lo ms fciles de
implementar.

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.
}

Mtodos Avanzados
Mtodo de Seleccin Directa /
QuickSort
Este mtodo consiste en resolver un problema a partir de la solucin de
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.

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