Sunteți pe pagina 1din 9

Estructura de datos

Desarrollo de Software

ACTIVIDAD 1 MTODOS DE ORDENACIN

Fecha: 08 / Ago /2017


Clase: DS-DEDA-1702-B1-002
Nombre Definicin Ventajas Desventajas Usos Ejemplo de Cdigo del
aplicacin mtodo

Se basa en la Es ms sencillo de Poco eficiente. Ordenar de Ver ejemplo de Ver cdigo de


Burbuja comparacin implementar. menor a mayor aplicacin burbuja abajo.
secuencial de los todos los burbuja abajo.
elementos nmero dentro
adyacentes de una lista.
intercambindolos
si es necesario
hasta que todos
estn ordenados.
Consiste en Es relativamente Su implementacin Ordenar todos Ver ejemplo de Ver cdigo de
Insercin insertar un sencillo de es ms eficiente que los nmeros o aplicacin insercin abajo.
nombre en su implementar y es el mtodo de letras dentro de insercin abajo.
posicin correcta ms eficiente que el burbuja pero una lista.
dentro de una lista mtodo de burbuja. ineficiente.
o archivo.
Se trata de Es ms eficiente que Es poco eficiente Ordenar Ver ejemplo de Ver cdigo de
Seleccin seleccionar el el ordenamiento de para listas muy elementos aplicacin seleccin abajo.
elemento menor burbujas. largas. dentro de una seleccin abajo.
de una lista y lista iniciando
realizar multiples por el elemento
pasadas por cada menor.
elemento.
Consiste en dividir Es un mtodo corto Es necesario Ordenar todos Ver ejemplo de Ver cdigo de
Quicksort la lista en la parte y eficiente. aprender como los elementos aplicacin Quicksort abajo.
media y programarlo. de una lista de Quicksort abajo.
subdividirla manera
sucesivamente eficiente.
hasta que est
ordenada.

Consiste en Es una mejora del Es ms eficiente que Ordenar listas Ver ejemplo de Ver cdigo de
Shellsort insertar el ordenamiento por el mtodo de cortas o aplicacin Shellsort abajo.
elemento en el insercin. insercin pero medianas. Shellsort abajo.
lugar empezando menos eficiente que
no por el principio el de Quicksort
sino por un lugar
ms cercano.

Ejemplo de aplicacin de burbuja

Inicio
Si L = 0 entonces
Escribir (Lista vacia)
Si no
Si j >= 1 y j <= L entonces
B P[j]
Si no
Escribir Error elemento no existente
Fin si
Fin si
Fin si

Ejemplo cdigo de burbuja

import java.io.*;

public class burbuja

public static void main(String arg[]) throws IOException

/*creacion del objeto para leer por teclado*/

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

/*ingreso del tamao de arreglos*/

System.out.print("\n Ingrese Numero de Datos a Ingresar : ");

int tam = Integer.parseInt(in.readLine());

/*creacion del arreglo*/

int arr[] = new int[tam];

System.out.println();
/*lectura del arreglo*/

int j = 0;
for (int i = 0 ; i < arr.length;i++)

j+=1;

System.out.print("Elemento " + j + " : ");

arr[i] = Integer.parseInt(in.readLine());

burbuja(arr);

static void burbuja(int arreglo[])

for(int i = 0; i < arreglo.length - 1; i++)

for(int j = 0; j < arreglo.length - 1; j++)

if (arreglo[j] < arreglo[j + 1])

int tmp = arreglo[j+1];

arreglo[j+1] = arreglo[j];

arreglo[j] = tmp;

for(int i = 0;i < arreglo.length; i++)


{

System.out.print(arreglo[i]+"\n");
}

Implementacin por insercin

inicio
desde i = 2 hasta N hacer

auxi = x[i]
k = i -1

SW = falso
Mientras (SW) y (k >= 1) hacer

Si auxi < X[k] entonces


X[k + 1] = X[k]
K=k1
Si no
SW = verdadero

Fin si
Fin mientras

X[k + 1] = aux1

Fin desde

fin

cdigo de insercin

public class OrdenamientoInsercion {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
OrdenamientoInsercion orden = new OrdenamientoInsercion();
int[] nums = {1,4,9,59,23,26,20,1,23,56,7};
int[] ordenarInsercion = orden.ordenarInsercion(nums);
for (int i = 0; i < ordenarInsercion.length; i++) {
System.out.println(ordenarInsercion[i]);
}
}
public int[] ordenarInsercion(int[] array){
int aux;
for (int i = 1; i < array.length; i++) {
aux = array[i];
for (int j = i-1; j >=0 && array[j]>aux; j--) {
array[j+1]=array[j];
array[j]=aux;
}
}
return array;
}
}

Ordenamiento por Quicksort


int pivote=A[izq]; // tomamos primer elemento como pivote
int i=izq; // i realiza la bsqueda de izquierda a derecha
int j=der; // j realiza la bsqueda de derecha a izquierda
int aux;

while(i<j){ // mientras no se crucen las bsquedas


while(A[i]<=pivote && i<j) i++; // busca elemento mayor que pivote
while(A[j]>pivote) j--; // busca elemento menor que pivote
if (i<j) { // si no se han cruzado
aux= A[i]; // los intercambia
A[i]=A[j];
A[j]=aux;
}
}
A[izq]=A[j]; // se coloca el pivote en su lugar de forma que tendremos
A[j]=pivote; // los menores a su izquierda y los mayores a su derecha
if(izq<j-1)
quicksort(A,izq,j-1); // ordenamos subarray izquierdo
if(j+1 <der)
quicksort(A,j+1,der); // ordenamos subarray derecho
}
Anlisis de la actividad:

En sta actividad he comparado los diferentes mtodos de


ordenamiento, pienso que la caracterstica principal de un mtodo es su
eficiencia ya que al ser ms eficiente se utilizan menos recursos, cuando
se tienen listas pequeas el tiempo de ordenamiento no parecera
importante, sin embargo cuando se tienen listas con millones de datos
la eficiencia del algoritmo se vuelve imprescindible, dos ejemplos muy
importantes del uso del mtodo de ordenamientos son los sistemas
operativos de las computadoras los cuales tienen que ordenar millones
de datos dentro del sistema de manera eficiente, es decir con los
menores pasos posibles. El segundo ejemplo seran las bases de datos
en donde las queries dictadas piden un ordenamiento y seleccin de
datos de forma muy rpida, los sistemas de bsqueda por ejemplo
captan mucha informacin y luego la ordenan para presentarla a los
usuarios por ejemplo de Google. El ordenamiento de datos es uno de
los temas ms importantes para un desarrollador de software
especialmente si se dirige al rea de anlisis de datos por ejemplo.

Fuentes de consulta:
Estructuras de datos, Abril 29 2015
http://puntocomnoesunlenguaje.blogspot.com/2012/12/java-quicksort.html

Goodrich, M. y Tamassia, R. (2010). Estructura de datos y algoritmos en Java. Mxico: CECSA.


Joyanes, L. (2010). Fundamentos de programacin. Algoritmos. Estructuras de datos y objetos.
Espaa: McGraw-Hill.
Joyanes, L. y Zahonero, I. (2012). Programacin en Java 2: algoritmos, estructuras de datos y
programacin orientada a objetos. Espaa: McGraw-Hill.

S-ar putea să vă placă și