tap-p01a ejercicio de ordenamiento burbuja

9
Instituto Tecnológico de la Laguna Ingenieria en Sistemas Computacionales TOPICOS AVANZADOS DE PROGRAMACION SEMESTRE: Ene - Jun / 2013 GRUPO: “B” 17 – 18 Hrs UNIDAD: 1 PRACTICA No.: 1a EJERCICIO DE ORDENAMIENTO BURBUJA ALUMNO: 11130036 Eduardo Díaz Salazar PROFESOR: Ing. Luis Fernando Gil Vázquez Torreón, Coah. a 03 de Febrero de 2013

Upload: eddu-diaz-salazar

Post on 09-Aug-2015

38 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TAP-P01a Ejercicio de Ordenamiento Burbuja

Instituto Tecnológico de la Laguna Ingenieria en Sistemas Computacionales

TOPICOS AVANZADOS DE PROGRAMACION

SEMESTRE: Ene - Jun / 2013 GRUPO: “B” 17 – 18 Hrs UNIDAD: 1 PRACTICA No.: 1a

EJERCICIO DE ORDENAMIENTO BURBUJA

ALUMNO:

11130036 Eduardo Díaz Salazar

PROFESOR: Ing. Luis Fernando Gil Vázquez

Torreón, Coah. a 03 de Febrero de 2013

Page 2: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 2

Ejercicio 1

Elaborar una clase java que reciba un arreglo de 10 enteros y que proporcione métodos para mostrar en consola el arreglo

ordenado en forma descendente el menor y el mayor de los números. (Clase Ordenamiento).

Elaborar una clase java que lea los 10 enteros desde teclado y utilice la clase anterior para mostrar los resultados. (Modificar la

clase Evaluacion).

Ejercicio 2 Modificar la clase ordenamiento para proporcionar un método que permita buscar un numero en el que el arreglo imprima la

posición en que lo encontró, y si no lo encuentra que imprima la posición más cercana al número buscado.

Análisis Ejercicio 1

Para la solución de este problema se platearan 2 clases: la clase Evaluacion y la clase Ordenamiento. Donde se aplicara el uso de

objetos, métodos, constructores y métodos de ordenamiento; además del uso de la clase Scanner para lectura de datos por medio

del teclado.

Ejercicio 2 Para la solución de este ejercicio se usara como base el ejercicio 1, solo se le agregará un método llamado buscar () en la clase

Ordenamiento.java, para buscar un numero deseado y dar su ubicación.

Diseño

Ejercicio 1

Evaluacion

+ Main ( string [] args)

Ordenamiento

Ordenados [] : Enteros

+ Ordenamiento ( int [] datos )

+ mostrarOrdenado ()

+ elMenor ()

+ elMayor ()

Page 3: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 3

Ejercicio 2

Código Ejercicio 1 Clase Evaluacion.java /*------------------------------------------------------------------------------------------

:* INSTITUTO TECNOLOGICO DE LA LAGUNA

:* INGENIERIA EN SISTEMAS COMPUTACIONALES

:* TOPICOS AVANZADOS DE PROGRAMACION "B"

:*

:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS

:*

:* Define un arreglo de números enteros por medio del teclado

:*

:* Archivo : Evaluacion.java

:* Autor : Eduardo Díaz Salazar 11130036

:* Fecha : 02/Feb/2013

:* Compilador : JAVA J2SE v1.7.0_11

:* Descripción : Define un arreglo de números enteros por el teclado, e implementa clase

:* Ordenamiento.java para ordenar los números de forma descendente,

:* también muestra el número menor y el mayor.

:*

:*------------------------------------------------------------------------------------------*/

public class Evaluacion {

//--------------------------------------------------------------

public static void main ( String [] args ) {

// Definimos el arreglo a ordenar

int [] desordenado = { 89, 34, 541, 213, 678, 4, 321 };

// Creamos una instancia de la clase ordenamiento

Ordenamiento ord = new Ordenamiento ( desordenado );

// Mostramos los resultados

ord.mostrarOrdenado ();

ord.elMayor ();

ord.elMenor ();

}

}

Evaluacion

+ Main ( string [] args)

Ordenamiento

Ordenados [] : Enteros

+ Ordenamiento ( int [] datos )

+ mostrarOrdenado ()

+ elMenor ()

+ elMayor ()

+ buscar ( int n)

Page 4: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 4

Clase Ordenamiento.java

/*------------------------------------------------------------------------------------------

:* INSTITUTO TECNOLOGICO DE LA LAGUNA

:* INGENIERIA EN SISTEMAS COMPUTACIONALES

:* TOPICOS AVANZADOS DE PROGRAMACION "B"

:*

:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS

:*

:* Clase que ordena números enteros y muestra el menor y mayor de ellos

:*

:* Archivo : Ordenamiento.java

:* Autor : Eduardo Díaz Salazar 11130036

:* Fecha : 02/Feb/2013

:* Compilador : JAVA J2SE v1.7.0_11

:* Descripción : Esta clase tiene un constructor recibe el arreglo de números enteros a ordenar

:* y dentro del mismo constructor ordena los números de forma descendente, además

:* tiene un método mostrarOrdenado () que muestra en consola los numero ordenados

:* y tiene un método elMayor () y elMenor () que muestran el número mayor

:* y menor respectivamente.

:*------------------------------------------------------------------------------------------*/

public class Ordenamiento {

// Datos miembro del clase

int [] ordenados;

//-----------------------------------------------------

// Constructor: Recibe un arreglo de enteros y lo ordena en forma

// descendente por la burbuja, y lo copia al arreglo "ordenados".

// Nota: antes de copiar crear la instancia del arreglo "ordenados".

// Tip usar la propiedad Length de los arreglos

public Ordenamiento (int [] datos ) {

ordenados = new int [ datos.length ];

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

for ( int j = i + 1; j < ordenados.length; j++ ) {

if ( datos [ i ] < datos [ j ] ) {

int aux = 0;

aux = datos [ i ];

datos [ i ] = datos [ j ];

datos [ j ] = aux;

}

}

}

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

ordenados [ i ] = datos [ i ];

}

}

//-----------------------------------------------------

// Mestra en cosola el contenido del arreglo "odenados"

public void mostrarOrdenado () {

System.out.println ( "Arreglo ordenado: " );

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

System.out.println ( ordenados [ i ] );

}

}

//-----------------------------------------------------

// Muesta en consola el numero mayor del arreglo ordenados.

public void elMayor () {

System.out.println ( "" );

System.out.print ( "El numero mayor es: " );

System.out.println ( ordenados [ 0 ] );

Page 5: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 5

}

//-----------------------------------------------------

//Muesta en consola el numero mayor del arreglo ordenados.

public void elMenor () {

System.out.println ( "" );

System.out.print ( "El numero menor es: " );

System.out.println ( ordenados [ ordenados.length - 1] );

}

//-----------------------------------------------------

}

Ejercicio 2

Clase Evaluacion.java

/*------------------------------------------------------------------------------------------

:* INSTITUTO TECNOLOGICO DE LA LAGUNA

:* INGENIERIA EN SISTEMAS COMPUTACIONALES

:* TOPICOS AVANZADOS DE PROGRAMACION "B"

:*

:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS

:*

:* Define un arreglo de número enteros leyéndolos desde el teclado

:*

:* Archivo : Evaluacion.java

:* Autor : Eduardo Díaz Salazar 11130036

:* Fecha : 02/Feb/2013

:* Compilador : JAVA J2SE v1.7.0_11

:* Descripción : Define un arreglo de números enteros por el teclado e implementa

:* la clase Ordenamiento.java para ordenar los numero de forma

:* descendente , también muestra el número menor y el mayor. Permite

:* buscar un número leído desde el teclado y dar su posición.

:*

:*

:*------------------------------------------------------------------------------------------*/

import java.util.Scanner;

public class Evaluacion {

//--------------------------------------------------------------

public static void main ( String [] args ) {

// Declaramos la variables a usar

int n = 0, aBuscar = 0;

int [] desordenado;

Scanner sc = new Scanner ( System.in );

// Dimensionamos el arreglo

System.out.print ( "Cantidad de numeros a ordenar: " );

n = sc.nextInt ();

desordenado = new int [ n ];

System.out.println ( "" );

// Leemos los datos del arreglo por el teclado

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

System.out.print ( "Ingrese el numero " + ( i + 1 ) + " : " );

desordenado [ i ] = sc.nextInt ();

}

System.out.println ( "" );

// Creamos una instancia de la clase ordenamiento

Ordenamiento ord = new Ordenamiento ( desordenado );

// Mostramos los resultados

ord.mostrarOrdenado ();

ord.elMayor ();

ord.elMenor ();

// Buscamos un numero

Page 6: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 6

System.out.print ( "" );

System.out.print ( "Ingrese un numero a buscar: " );

aBuscar = sc.nextInt ();

ord.buscar ( aBuscar );

}

}

Clase Ordenamiento.java

/*------------------------------------------------------------------------------------------

:* INSTITUTO TECNOLOGICO DE LA LAGUNA

:* INGENIERIA EN SISTEMAS COMPUTACIONALES

:* TOPICOS AVANZADOS DE PROGRAMACION "B"

:*

:* SEMESTRE: ENE-JUN/2013 HORA: 17-18 HRS

:*

:* Clase que ordena números enteros y muestra el menor y mayor de ellos

:*

:* Archivo : Ordenamiento.java

:* Autor : Eduardo Díaz Salazar 11130036

:* Fecha : 02/Feb/2013

:* Compilador : JAVA J2SE v1.7.0_11

:* Descripción : Esta clase tiene un constructor recibe el arreglo de números enteros a ordenar

:* y dentro del mismo constructor ordena los números de forma descendente, además

:* tiene un método mostrarOrdenado () que muestra en consola los numero ordenados

:* y tiene un método elMayor () y elMenor () que muestran el número mayor

:* y menor respectivamente. Tambien tiene otro método buscar() que permite

:* al usuario buscar la posición de un numero ingresado.

:*

:*------------------------------------------------------------------------------------------*/

public class Ordenamiento {

// Datos miembro del clase

int [] ordenados;

//----------------------------------------------------------------------------------

// Constructor: Recibe un arreglo de enteros y lo ordena en forma

// descendente por la burbuja, y lo copia al arreglo "ordenados".

// Nota: antes de copiar crear la instancia del arreglo "ordenados".

// Tip usar la propiedad Length de los arreglos

public Ordenamiento (int [] datos ) {

ordenados = new int [ datos.length ];

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

for ( int j = i + 1; j < ordenados.length; j++ ) {

if ( datos [ i ] < datos [ j ] ) {

int aux = 0;

aux = datos [ i ];

datos [ i ] = datos [ j ];

datos [ j ] = aux;

}

}

}

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

ordenados [ i ] = datos [ i ];

}

}

//----------------------------------------------------------------------------------

// Mestra en cosola el contenido del arreglo "odenados"

public void mostrarOrdenado () {

Page 7: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 7

System.out.println ( "Arreglo ordenado: " );

System.out.println ( "" );

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

System.out.println ( "dato [ " + i + " ] = " + ordenados [ i ] );

}

}

//----------------------------------------------------------------------------------

// Muesta en consola el numero mayor del arreglo ordenados.

public void elMayor () {

System.out.println ( "" );

System.out.print ( "El numero mayor es: " );

System.out.println ( ordenados [ 0 ] );

}

//----------------------------------------------------------------------------------

// Muesta en consola el numero mayor del arreglo ordenados.

public void elMenor () {

System.out.print ( "El numero menor es: " );

System.out.println ( ordenados [ ordenados.length - 1 ] );

System.out.println ( "" );

}

//----------------------------------------------------------------------------------

// Busca un numero definido desde la clase Evaluacion

public void buscar ( int n ) {

// Variables

int primero = 0, ultimo = ordenados.length - 1, centro = 0;

boolean encontrado = false;

int pos = 0;

System.out.println ( "" );

while ( ( primero <= ultimo ) && ( encontrado == false ) ) {

centro = ( primero + ultimo ) / 2;

if ( ordenados [ centro ] == n) {

encontrado = true;

pos = centro;

}

else {

if ( ordenados [ centro ] < n) {

ultimo = centro - 1;

}

else {

primero = centro + 1;

}

}

}

if ( encontrado ) {

System.out.print ( "El numero buscado esta en la posicion : " + centro );

}

else {

System.out.print ( "No se ha encontrado el numero buscado, pero la posicion mas

cercana es la : " + centro );

}

}

//----------------------------------------------------------------------------------

}

Page 8: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 8

Prueba de Ejecución

Ejercicio 1

Primero se pide la cantidad de números que se van a leer por el teclado, después se pide de un por uno los números para definir

el arreglo, luego se muestra el arreglo de números ya ordenado, al final podemos ver el número mayor y menor.

Ejercicio 2

Hace lo mismo que el ejercicio anterior solo que al final pide un numero leido por el teclado para buscarlo y dar su ubicación, en

este caso el numero a buscar es el 65 y su posicion es la 2.

Page 9: TAP-P01a Ejercicio de Ordenamiento Burbuja

ITL Topicos Avanzados de Programacion Ene-Jun/2013

Pag. 9

Ahora se pide el número 77 a buscar por no se encuentra en el arreglo, por lo cual se le da la posición más carca al número

buscado que es la 1.