Java

26
Arreg los De Java

description

Java

Transcript of Java

Page 1: Java

Arreglos De

Java

Page 2: Java

Que es un arregloUn arreglo es un grupo de posiciones de

memorias contiguas, todas las cuales tienen el mismo nombre y el mismo tipo.

Para referirnos a una posición o elemento en particular del arreglo, especificamos el nombre del arreglo y el numero de posición de ese elemento en el arreglo.

Ejemplo:

Page 3: Java

  -45

6

0

72

1543

-89

0

62

-3

1

6453

78

Nombre del arreglo(observen que todos los elementos de este arreglo tiene el mismo nombre, c)

Numero de posición del elemento dentro del arreglo c

C[0]C[1]C[2]C[3]C[4]C[5]C[6]C[7]C[8]C[9]C[10]C[11]

Page 4: Java

  -45

6

0

72

1543

-89

0

62

-3

1

6453

78

Nombre del arreglo(observen que todos los elementos de este arreglo tiene el mismo nombre, c)

Numero de posición del elemento dentro del arreglo c

C[0]C[1]C[2]C[3]C[4]C[5]C[6]C[7]C[8]C[9]C[10]C[11]

Page 5: Java

Cual es la sintaxis para declarar un arreglo

El programador especifica el tipo de los elementos y usa el operador new para asignar espacio de almacenamiento al numero de elementos requerido por cada arreglo. Para asignar a la memoria a los 12 elementos del arreglo c usamos la declaración:

Int c[] = new int [ 12 ];

Page 6: Java

Tipo de arreglo para dos pasos

El enunciado anterior también puede realizarse en dos pasos como sigue:

Int c[] ; // declarar el arregloC = new int [ 12 ] ; //asigna memoria al arreglo

66

Page 7: Java

culés son las operaciones básicas para trabajar en arreglos

• - Insertar elementos • - Búsqueda de elementos • - Eliminar elementos • - Mostrar los elementos • - Ordenar los elementos • - Modificar algún elemento

77

Page 8: Java

Como se arregla

88

Page 9: Java

Como se elimina

• Entiendo que por arreglo te refieres a un array. • Estos elementos son memoria estatica, es decir, se

reserva un espacio en memoria para ese array del tamaño que sea y no se libera hasta que acaba la ejecución. Por lo que no puedes eliminar un dato de un array, pues esa memoria permanece ahí.

99

Page 10: Java

• Pero lo que sí puedes hacer es sobreescribir ese valor por otro, por ejemplo si es un array de objetos, puedes poner la posicion a eliminar con valor null, ejemplo suponiendo que quieras eliminar el 5º elemento:

• Objeto[] array = new Objeto[10];//Inicializamos el arrayfor(int i = 0; i < array.length; i++) array[i]=new Objeto();//Eliminamos el quinto elementoarray[4]=null;

Page 11: Java

• Si el array no es de objetos y es de tipos primitivos (int, byte, char, float, double,boolean) no lo puedes poner a null, pero puedes elegir tu algún valor que sepas que significa "eliminado", por ejemplo en el caso de int un valor negativo puede significar eliminado para ti. O puedes tener un array secundario de tipo boolean que se llame eliminiados y de la misma longitud que el original, de tal manera que si un dato ya no es válido, lo marques como true en el array "eliminados".Ejemplo:

Page 12: Java

• int[] array = new int[10];boolean[] eliminados = new boolean[10];//Inicializamos el arrayfor(int i = 0; i < array.length; i++){ array[i]=i; eliminados[i]=false;}//Eliminamos el quinto elementoeliminados[4]=true;

• Luego cuando vayas usar los datos, harías una comprobación del tipo:

• if(!eliminados[x])....else System.out.println("El dato "+x+" ha sido eliminado!");

Page 13: Java

Como se accede un arreglo...

1313

Page 14: Java

Los métodos de ordenamiento y búsqueda ( lineal y binaria )

En esta sección veremos la técnica de búsqueda : la técnica simple de búsqueda lineal y la técnica de búsqueda binaria mas eficiente, con su método.

Búsqueda lineal compara cada elemento del arreglo con la clave de búsqueda ,pues que el arreglo no esta en ningún orden especifico, es igualmente probable que el valor se encuentre en el primer elemento que en el ultimo, por tanto el programador tendrá que comparar la clave de búsqueda con la mitad de los elementos del arreglo.

Ejemplo:

1414

Page 15: Java

• // búsqueda lineal en un arreglo• Import java.awt.*;• Import java.applet.applet;

• Public class LinearSearch extends Applet {• Int a[];• Int element;• String searchKey; // clave de búsqueda• Label enterLabel; //rotulo para la entrada• TextField enter; //campo de texto para la entrada• Label resultLabel; //rotulo para resultado• TextField result; // campo de texto para resultado

• Public void init ()• {• a = new int [100];• for ( int i = 0; < a.length; i++ ) // crear los datos • a [ i ] = 2* i ;

Page 16: Java

• enterLabel = new Label (‘’Teclee clave de búsqueda entera’’);• Enter =new TextField(10);• Resultlabel=new label (‘’Resultado’’);• Result=new Textfield (25);• Result.setEditable ( false );• Add ( enterLabel);• Add ( enter );• Add ( resultLabel );• Add ( result);• }• Public int LinearSearch ( int key ) // búsqueda lineal ( int clave )• {• For ( int n = 0; n < a.length ; n++ )• if ( a [ n ] == key )• return n ;• return -1 ;

Page 17: Java

• El método de búsqueda lineal funciona bien con arreglos pequeños o arreglos no ordenados. Sin embargo, en el caso de arreglos grandes la búsqueda lineal no es eficiente. Si el arreglo esta ordenado podemos usar la técnica de búsqueda binaria de alta velocidad.

Page 18: Java

Búsqueda Binaria• El algoritmo de búsqueda binaria elimina de la búsqueda la mitad de

los elementos de los arreglo que quedan después de cada comparación. El algoritmo encuentra el elemento situado a la mitad del arreglo y lo compara con la clave de la busqueda.Sin son iguales, se habrá encontrado la clave y se devolverá el subíndice del elemento en cuestión; si no , el problema se reduce buscar en la mitad del arreglo.

• Si la clave de búsqueda es menor que el elemento del medio del arreglo, se busca en la primera mitad del arreglo; si no, se busca en la segunda mitad del arreglo, si la clave de brusquedad no es el elemento que esta en la mitad del subarreglo especificado ( fragmento del arreglo original ), el algoritmo se repite con la cuarta parte del arreglo original .

Page 19: Java

• La búsqueda continua hasta que la clave de búsqueda sea igual al elemento medio de un subarreglo o hasta que el subarreglo consista en un solo elemento que no sea igual a la clave de búsqueda ( es decir, no se encontró la clave).

• Ejemplo:

• // búsqueda binaria de un arreglo• import java.awt .* ;• Import java.applet.applet;

• Public class binarysearch extends applet {• int a [];• int element;• string searchkey ; // clave de búsqueda• int xposition ; // posición horizontal para

dibujar en la applet

Page 20: Java

• int Y posición; // posición vertical para dibujar en la applet• Label enterLabel ;• Textfield enter ;• Label resultLabel ;• Textfield result; // campo de texto para el resultado• Boolean timetosearch

• public void init () • {• a = new int [15];• For ( int i = 0; i < a.length; i++ ) // crear los datos • a [ i ] = 2 + i ;• enterLabel = new Label (´´ teclee la clave ´´ );• Enter = new TextField ( 5 );• resultLabel = new Label ( ´´ Resultado ´´ );• Result .setEditable ( false );• Add ( enterLabel );• Add (enter );• Add ( resultLabel );• Add ( result );• }

Page 21: Java

• Public void paint ( Graphics g )• If (timeTosearch ) {//evitar buscar en la

primera invocacion• element =nbinarysearch { • Integer . Parseint ( searchkey ) , g );

• If ( element ! = -1 )• Result.setText {• ´´ valor hallado en elemento ´´+

element );• }• }• Public boolean action ( Event event, object

o )• {

Page 22: Java

• If ( eveny.target == enter ) {• timeToSearch = true ;• Xposition = 25;• Yposition =75;• }• // búsqueda binarySearch ( int key , Graphics

gg )• {• Gg.drawstring (‘’proporciones del arreglo en

que se busco’’ , xposicion, y posición);• Y posicion += 15;• Int low = 0; //subindice

bajo• Int high = a. length – 1; // subindice alto• Int middle; //subindice

medio

Page 23: Java

• While (low <=high) {• middlen =( low + high ) / 2;• printRow(low, mddle, hagh, gg);• If ( key < a[ middle ] ) // se encontro return

middle;• Else if ( key < a [ middle ] )• High = middle -1; // buscar parte baja del

arreglo else• Low = middle + 1; // buscar parte alta del

arreglo• }• Return -1; // no se encontro searchkey• }• // imprimir una fila de salida mostrndo la

parte• // del arreglo que se esta procesando ahora.

Page 24: Java

• Void printRow ( int low, int mid, int high, grapics gg)

• {• xPosicion =25;• For ( int i = 0; i < a. Length; i++ ) {• If ( i < low || i > high )• Gg.draString(‘’’’, xposicion, yposicion);• Else if ( i == mid ) // marcar valor medio• Gg. drawString( String. valueOF ( a[ i ]) +

´’’*’’,• xposicion, yposicion );

else• Gg.drawString ( aString. valueOF ( a [ i ] ) ,• xposition, yposition );• Xposition += 20;

Page 25: Java

• }• Yposition += 15;• }• })• Public boolean action ( event , object o )• {• If ( event.target ==enter ) {• Searchkey = event .arg.tostring( );o en el

elemento ‘’• Element = linearsearch

_( interger.parseInt ( seachkey ) );• If ( element != -1 )• Result . setText ( ‘’valor hallad

Page 26: Java

Método de BurbujaEl ordenamiento de burbuja consiste es decir, colocar los datos en un orden especifico, como ascendente o descendente es una de la aplicaciones computacionales mas importantes .

El método de burbuja es también llamado intercambiar según sea necesario para intercambiar dos elementos del arreglo.

La principal virtud del ordenamiento de burbuja es que es fácil de programar. Sin embargo. Este ordenamiento se ejecuta con lentitud, cosa que se hace evidente si ordenamos arreglos grandes.