Sie sind auf Seite 1von 14

Auxiliar 10: Busqueda y Ordenamiento

CC1001 Computacin I

Algoritmos de Busqueda
Los algoritmos de busqueda son muy importantes para la computacin, en la mayora de las aplicaciones los utilizaremos, basta recordar la Tarea 2 de este curso. Secuencial: Busca secuencialmente asta encontrar el elemento. O!n". Binaria: Busca partiendo del medio, #eligiendo$ si el elemento buscado es m%s alto o m%s ba&o. 'equiere O!log2!n"" (as ing: Busca mediante una )uncin que entrega el lugar donde est% un cierto elemento dado ese mismo elemento. O!*" +s claro cuales son las m%s r%pidos y los m%s comple&os. +n orden de m%s comple&o y m%s rapido a menos comple&o y menos rapido son (as ing, Binaria, Secuencial. +n nuestro caso ,eremos los algoritmos de busqueda para arreglos de todo tipo. CC1001 Computacin I 2

Secuencial
+l algoritmo de busqueda secuencial busca en un arreglo siguiendo el indice, es decir busca secuencialmente. +ste algoritmo se puede me&orar si el arreglo esta ordenado, pues podremos saber en alg-n momento si nos pasamos de donde deberia estar el ob&eto buscado. .eremos la implementacin en un arreglo de Strings. static public int secuencial(String palabra,String arreglo[]){ for(int i=0;i<arreglo.length;++i){ int c=arreglo[i].compare o(palabra); if(c!0)return "#; if(c==0)return i; $ return "#; $ +scribe los ,alores que tomara c para la siguiente llamada. String a/0123i4i,manzana,melon,naran&a,platano56 String b1$naran&a$6 int i1secuencial!b,a"6 CC1001 Computacin I 3

Binaria
+l algoritmo de busqueda binaria parte eligiendo el elemento del centro del arreglo, luego elige el elemento del centro de la primera o la segunda mitad seg-n el elemento elegido anteriormente es mayor o menor !respecti,amente" que el buscado. +s claro que se requiere un arreglo ordenado. static public int binario(String palabra,String arreglo[], int n){ int ip=0,iu=n; %hile(ip!=if){ int i=(iu+ip)&'; int c=arreglo[i].compare o(palabra); if(c==0)return i; if(c<0)ip=i+#; else iu=i"#; $ return "#; $ +scribe los ,alores que tomara c para la siguiente llamada. String a/0123i4i,manzana,melon,naran&a,platano56 String b1$naran&a$6 int i1binaria!b,a,7"6 CC1001 Computacin I 4

Hashing
+l algoritmo de as ing realiza un # as ing$ a la palabra a buscar y este de,uel,e el indice donde debiera estar esta. static public int hashing(String palabra,String arreglo[]){ int i=palabra.hash(o)e(); if(arreglo[i].e*uals(palabra))return i; return "#; $

8igamos que el m9todo as :ode!" aplicado a un String entrega la suma de los c ar casteados a int, es decir para #pera$ recibiriamos **2 ; *<* ; **= ; >?1=2=. @u9 arias si tienes dos palabras con el mismo as :ode !amor y roma"A

CC1001 Computacin I

E ercicio
+scriba una )uncin que realice una busqueda !binaria" en un arreglo de Strings entre dos indices. static public int binaria(String pal,String arr[],int ip,int iu){ if(ip!iu)return "#; int i=(ip+iu)&'; int c=pal.compare o(arr[i]); if(c==0)return i; if(c<0)return binaria(pal,arr,ip,i"#); else return binaria(pal,arr,i+#,iu); $ Bropuesto: :rear un ob&eto Cec a que tenga las tres busquedas antes eDplicadas para arreglos de Cec a.

CC1001 Computacin I

Algoritmos de !rdenamiento
:omo ,imos anteriormente, los algoritmos de busqueda necesitan algunas ,eces de elementos ordenados, es por eso que &unto a ellos eDisten di,ersos algoritmos de ordenamiento que son igual o m%s importantes que los de busqueda. +stos son: +D austi,o : Ordena los elementos a la )uerza, con dos arreglos eligiendo el menor de los no seleccionados. Seleccin y 'emplazo: :omo el eD austi,o pero con un arreglo y eligiendo el menor de los seleccionados para luego reemplazarlo en la posicin correcta. BubbleSort: +n cada una de las pasadas # acer subir la burbu&a !el mayor" al -ltimo lugar$. Ensercin: Tomamos cada elemento y lo insertamos ordenado en el sector de los ordenados. +stos algoritmos son de orden cuadr%tico.

CC1001 Computacin I

Exhausti"o
+l ordenamiento eD austi,o elige el menor de un arreglo y lo trans)iere a la primera posicin de otro arreglo. Luego marca el que seleccion y realiza lo mismo en los elementos restantes. static public +oi) e,hausti+o(String arreglo[],int n){ String au,[]=ne% String[n]; for(int i=0;i<n;++i){ int im=in)ice-enor(arreglo,n); au,[i]=arreglo[im]; arreglo[im]=null; $ for(int i=0;i<n;++i) arreglo[i]=au,[i]; $ *" Ordena el siguiente arreglo mediante el m9todo eD austi,o siendo lo m%s eDplicito posible. String a/012platano,3i4i,sandia,naran&a,melon,pera,manzana56 2" +scribe el m9todo indiceFenor!String a/0,int n" CC1001 Computacin I 8

Seleccin # $empla%o
+l ordenamiento seleccin y remplazo es muy parecido al eD austi,o pero ocupa menos memoria pues no necesita de un arreglo auDiliar. static public +oi) rempla.o(String arreglo[],int n){ for(int i=0;i<n;++i){ int im=in)ice-enor(arreglo,i,n); String au,=arreglo[im]; arreglo[im]=arreglo[i]; arreglo[i]=au,; $ $ Si bien la implementacin es m%s corta, no aporta muc o a la rapidez del ordenamiento. *" Ordena el siguiente arreglo mediante el m9todo de seleccin y remplazo siendo lo m%s eDplicito posible. String a/012platano,3i4i,sandia,naran&a,melon,pera,manzana56 2" +scribe el m9todo indiceFenor!String a/0,int ip,int iu" G" +scribe el m9todo indiceFayor!String a/0,int n" eDplicado en auDiliar CC1001 Computacin I 9

Bu&&le Sort
+l ordenamiento de la burbu&a tiene ese nombre por la analoga entre el mayor de un arreglo subiendo por este y una burbu&a subiendo por un )luido. Bara que el mayor suba aremos comparaciones sucesi,as entre pares consecuti,os del arreglo. static public +oi) bubbleSort(String arreglo[],int n){ if(n<')return; for(int i=0;i<n"#;++i) if(arreglo[i].compare o(arreglo[i+#])!0){ String au,=arreglo[i]; arreglo[i]=arreglo[i+#]; arreglo[i+#]=au,; $ bubblesort(arreglo,n"#); $ *" Ordena el siguiente arreglo mediante el m9todo de bubblesort siendo lo m%s eDplicito posible. String a/012platano,3i4i,sandia,naran&a,melon,pera,manzana56 2" :uantas comparaciones realiza en una llamadaA, y en nA CC1001 Computacin I

10

E ercicio en clase
Tenemos un Ob&eto llamado :olor que es :omparable. +l m9todo comparable debe entregar un int que es la resta de las normas. Hn :olor se de)ine mediante tres colores !'ed,Ireen,Blue" con n-meros para cada uno desde el < al 277 donde < es ausencia y 277 es m%Dima presencia.

*" +scriba el m9todo public int compareTo!:omparable D" 2" +scriba el m9todo ordenar que implemente el m9todo de la burbu&a pero ordenando de mJas claro a m%s oscuro.

CC1001 Computacin I

11

Insercin
+l ordenamiento de insercin ,a tomando cada elemento del arreglo y lo inserta en el espacio de los ya ordenados. public +oi) or)enar(String[] arreglo, int ip, int iu) { for (int i=ip+#; i<=iu; i++){ String au, = arreglo[i]; int /=i; %hile(/!0 00 1[/"#].compare o(au,)!0){ arreglo[/]=arreglo[/"#]; /""; $ arreglo[/] = au,; $ $ *" Ordena el siguiente arreglo mediante el m9todo de insercin siendo lo m%s eDplicito posible. String a/012platano,3i4i,sandia,naran&a,melon,pera,manzana56 2" :omo lo ariamos si quisieramos ordenar de mayor a menorA CC1001 Computacin I 12

E ercicio con nota

+scribe la clase Klumno que implementa a :omparable que contiene los siguientes m9todos: public Klumno!String nombre,String )ec aLac" MM:onstructor del ob&eto Klumno, )ec aLac es de la )orma KKKKFF88 public int compareTo!:omparable c" MMF9todo de :omparable que de,uel,e N* si c es mayor que #t is$, * si #t is$ es mayor y < si son iguales. La relacin de orden es primero por la edad y luego por el nombre. static public ,oid ordenar!Klumno a/0,int ip,int iu" MMF9todo est%tico que ordena los alumnos de mayor a menor, es decir en a/ip0 debe quedar el mayor.

CC1001 Computacin I

13

'I(
Profesor: Andrs Muoz Auxiliares: Oscar Alvarez Pedro Valencia

Realizado con OpenOffice.org Impress CC1001 Computacin I 14

Das könnte Ihnen auch gefallen