algotitmo de to arreglado
TRANSCRIPT
-
8/6/2019 Algotitmo de to Arreglado
1/21
Algoritmo de ordenamientoAlgoritmo de ordenamiento
RadixRadix-- SortSort
Flores Wong Rosa ElenaFlores Wong Rosa ElenaMendoza Ibarra MayraMendoza Ibarra Mayra
Ayala Inzunza BriseidaAyala Inzunza BriseidaEstructura de DatosEstructura de Datos
Prof. Doc. Lucia BarrnProf. Doc. Lucia Barrn
-
8/6/2019 Algotitmo de to Arreglado
2/21
HISTORIAHISTORIA
EEEE..UUUU..,, 18801880:: nono sese puedepuede terminarterminar elel censocenso dede lala dcadadcada anterioranterior (en(enconcreto,concreto, nono sese llegallega aa contarcontar elel nmeronmero dede habitanteshabitantes solteros)solteros)
HermanHerman HollerithHollerith (empleado(empleado dede lala oficinaoficina deldel censo,censo, dede 2020 aosaos dede edad)edad)inventainventa unauna mquinamquina tabuladoratabuladora elctricaelctrica parapara resolverresolver elel problemaproblema;; enenesenciaesencia eses unauna implementacinimplementacin fsicafsica deldel radixradix sortsort 18901890:: sese usanusan unasunas100100 mquinasmquinas dede HollerithHollerith parapara tabulartabular laslas listaslistas deldel censocenso dede lala dcadadcada (un(unoperadoroperador expertoexperto procesabaprocesaba 1919..071071 tarjetastarjetas enen unauna jornadajornada laborallaboral dede 6655horas,horas, unasunas 4949 tarjetastarjetas porpor minuto)minuto)
18961896:: HollerithHollerith creacrea lala empresaempresa TabulatingTabulating MachineMachine CompanyCompany 19001900::HollerithHollerith resuelveresuelve otraotra crisiscrisis federalfederal inventandoinventando unauna nuevanueva mquinamquina conconalimentacinalimentacin automticaautomtica dede tarjetastarjetas (til,(til, concon msms oo menosmenos variaciones,variaciones, hastahasta19601960))
19111911:: lala empresaempresa dede HollerithHollerith sese fusionafusiona concon otrasotras dos,dos, creandocreando lala
CalculatingCalculating--TabulatingTabulating-- RecordingRecording CompanyCompany (CTR)(CTR) 19241924:: ThomasThomas WatsonWatson cambiacambia elel nombrenombre aa lala CTRCTR yy lala llamallama InternationalInternational BusinessBusiness MachinesMachines (IBM)(IBM) ElEl restoresto dede lala historiahistoria eses bienbien
conocidoconocido hastahasta:: 20002000:: crisiscrisis deldel recuentorecuento dede votosvotos enen laslas PresidencialesPresidenciales ElElrestoresto dede lala historiahistoria eses bienbien conocidoconocido
-
8/6/2019 Algotitmo de to Arreglado
3/21
Radix SortRadix Sort
Es unEs un algoritmo de ordenamientoalgoritmo de ordenamiento quequeordena enteros procesando sus dgitosordena enteros procesando sus dgitos
de forma individual. Como los enterosde forma individual. Como los enterospueden representar cadenas depueden representar cadenas decaracteres (por ejemplo, nombres ocaracteres (por ejemplo, nombres ofechas) y, especialmente, nmeros enfechas) y, especialmente, nmeros en
punto flotante especialmentepunto flotante especialmenteformateados,formateados, radix sortradix sort no estno estlimitado slo a los enteros.limitado slo a los enteros.
-
8/6/2019 Algotitmo de to Arreglado
4/21
DescripcinDescripcin
Este mtodo se puede considerar como unaEste mtodo se puede considerar como unageneralizacin de la clasificacin por urnas.generalizacin de la clasificacin por urnas.
Consiste en hacer diversos montones deConsiste en hacer diversos montones defichas, cada uno caracterizado por tener enfichas, cada uno caracterizado por tener ensus componentes un mismo digito (letra sisus componentes un mismo digito (letra sies alfabtica) en la misma posicin; estoses alfabtica) en la misma posicin; estos
montones se recogen en orden ascendentemontones se recogen en orden ascendentey se reparte en montones segn el siguientey se reparte en montones segn el siguientedigito de la clave.digito de la clave.
-
8/6/2019 Algotitmo de to Arreglado
5/21
EjemploEjemplo
345, 721, 425, 572, 836, 467, 672, 194, 365,345, 721, 425, 572, 836, 467, 672, 194, 365,236, 891, 746, 431, 834, 247, 529, 216, 389236, 891, 746, 431, 834, 247, 529, 216, 389
Paso 1: atendiendo el digito de menor pesoPaso 1: atendiendo el digito de menor peso(unidades);(unidades);
216
431 365 746891 672 834 425 236 247 389
721 572 194 345 836 467 529
1 2 4 5 6 7 9
-
8/6/2019 Algotitmo de to Arreglado
6/21
Tomando los montones en orden, la secuencia de fichas quedaran:Tomando los montones en orden, la secuencia de fichas quedaran:
721, 891, 431, 572, 672, 194, 834, 345, 425, 365, 836, 236,721, 891, 431, 572, 672, 194, 834, 345, 425, 365, 836, 236,
746, 216, 467, 347, 529, 389.746, 216, 467, 347, 529, 389.
Paso 2: distribuimos las secuencia de fichas enPaso 2: distribuimos las secuencia de fichas enmontones respecto al segundo digito:montones respecto al segundo digito:
236
529 836 247
425 834 746 467 672 194
216 721 431 345 365 572 389 891
1 2 3 4 6 7 8 9tomando de nuevo los montones en orden la
secuencia de fichas quedari asi:
216 721 425 529 431 834 866 236 345
746 247 365 467 572 672 389 891 194
-
8/6/2019 Algotitmo de to Arreglado
7/21
Continuacin:Continuacin:
Paso 3: se distribuye de nuevo las fichas respectoPaso 3: se distribuye de nuevo las fichas respectoal tercer digito:al tercer digito:
247 389 467 891
236 365 431 572 746 836
194
216
3
454
255
296
727
218
341 2 3 4 5 6 7 8
tomando de nuevo los montones en orden la
secuencia de fichas queda ya ordenada:
194 216 236 247 345 365 389 425 431
467 529 572 672 721 746 834 836 891
-
8/6/2019 Algotitmo de to Arreglado
8/21
ClasificacinClasificacin
el de dgito menos significativo (el de dgito menos significativo (LSDLSD))
el de dgito ms significativo (el de dgito ms significativo (MSDMSD).).
Radix sortLSDRadix sortLSDprocesa lasprocesa lasrepresentaciones de enteros empezando porrepresentaciones de enteros empezando porel dgito menos significativo y movindoseel dgito menos significativo y movindosehacia el dgito ms significativo.hacia el dgito ms significativo.
Radix sortMSDRadix sortMSDtrabaja en sentidotrabaja en sentidocontrario.contrario.
-
8/6/2019 Algotitmo de to Arreglado
9/21
Radix sortMSDRadix sortMSD
"b, c, d, e, f, g, h, i, j, ba""b, c, d, e, f, g, h, i, j, ba"
OrdenadaOrdenada
"b, ba, c, d, e, f, g, h, i, j""b, ba, c, d, e, f, g, h, i, j"
Ej.2Ej.2
1 al 10 ser1 al 10 ser
"1, 10, 2, 3, 4, 5, 6, 7, 8, 9""1, 10, 2, 3, 4, 5, 6, 7, 8, 9"Radix sortsLSDRadix sortsLSD
"1, 2, 3, 4, 5, 6, 7, 8, 9, 10"."1, 2, 3, 4, 5, 6, 7, 8, 9, 10".
-
8/6/2019 Algotitmo de to Arreglado
10/21
EjemploEjemplo
Vector original:Vector original:25 57 48 37 12 92 86 3325 57 48 37 12 92 86 33Asignamos los elementos en colas basadas en el dgito menos significativo de cada uno de ellos.Asignamos los elementos en colas basadas en el dgito menos significativo de cada uno de ellos.0:0:1:1:2: 12: 122 9922
3:33:3334:4:5: 25: 2556: 86: 8667: 57: 577 33778: 48: 4889:9:Despus de la primera pasada, la ordenacin queda:Despus de la primera pasada, la ordenacin queda:12 92 33 25 86 57 37 4812 92 33 25 86 57 37 48
Colas basadas en el dgito ms significativo.Colas basadas en el dgito ms significativo.0:0:1:1: 11222:2: 22553:3:333333774:4: 4485:85: 55776:6:7:7:8:8: 8866
9:
9:
9922Lista ordenada:Lista ordenada:12 25 3337 48 57 86 9212 25 3337 48 57 86 92
-
8/6/2019 Algotitmo de to Arreglado
11/21
ORDENAMIENTO PORORDENAMIENTO POR
RADIXRADIX
Estos mtodos no comparan llaves;Estos mtodos no comparan llaves;sino que procesan y comparansino que procesan y comparanpedazos de llaves.pedazos de llaves.
-
8/6/2019 Algotitmo de to Arreglado
12/21
EstabilidadEstabilidad
Un algoritmo de ordenamiento seUn algoritmo de ordenamiento seconsidera estable si preserva el ordenconsidera estable si preserva el orden
relativo de llaves iguales en larelativo de llaves iguales en laestructura de datosestructura de datos--..
-
8/6/2019 Algotitmo de to Arreglado
13/21
EjemploEjemplo
si queremos ordenar por calificacin unasi queremos ordenar por calificacin unalista de asistencia que se encuentralista de asistencia que se encuentraordenada alfabticamente, un algoritmoordenada alfabticamente, un algoritmoestable produce una lista en la que losestable produce una lista en la que losestudiantes con el mismo grado seestudiantes con el mismo grado semantienen ordenados alfabticamente,mantienen ordenados alfabticamente,mientras que un algoritmo inestable nomientras que un algoritmo inestable nodejar trazas del ordenamiento original. Ladejar trazas del ordenamiento original. Lamayora de los mtodos bsicos sonmayora de los mtodos bsicos sonestables, pero la mayora de los mtodosestables, pero la mayora de los mtodossofisticados no lo son.sofisticados no lo son.
-
8/6/2019 Algotitmo de to Arreglado
14/21
Ordenamiento por radixOrdenamiento por radix
directodirecto Una variante al mtodo de intercambio radixUna variante al mtodo de intercambio radix
consiste en examinar los bits de derecha aconsiste en examinar los bits de derecha a
izquierda. El mtodo depende de que elizquierda. El mtodo depende de que elproceso de particin de un bit sea estable.proceso de particin de un bit sea estable.Por lo que el proceso de particin utilizadoPor lo que el proceso de particin utilizadoen el algoritmo de intercambio radix no nosen el algoritmo de intercambio radix no nossirve; el proceso de particin es comosirve; el proceso de particin es comoordenar una estructura con solo dos valores,ordenar una estructura con solo dos valores,por lo que el algoritmo de distribucin porpor lo que el algoritmo de distribucin porconteo nos sirve muy bien.conteo nos sirve muy bien.
-
8/6/2019 Algotitmo de to Arreglado
15/21
Anlisis de eficiencia de losAnlisis de eficiencia de los
ordenamientos por radixordenamientos por radix Depende en que las llaves estn compuestas de bits aleatoriosDepende en que las llaves estn compuestas de bits aleatorios
en un orden aleatorio. Si esta condicin no se cumple ocurreen un orden aleatorio. Si esta condicin no se cumple ocurreuna fuerte degradacin en el desempeo de estos mtodos.una fuerte degradacin en el desempeo de estos mtodos.Adicionalmente, requiere de espacio adicional para realizar losAdicionalmente, requiere de espacio adicional para realizar los
intercambios.intercambios. Los algoritmos de ordenamiento basados en radix seLos algoritmos de ordenamiento basados en radix se
consideran como de propsito particular debido a que suconsideran como de propsito particular debido a que sufactibilidad depende de propiedades especiales de las llaves,factibilidad depende de propiedades especiales de las llaves,en contraste con algoritmos de propsito general comoen contraste con algoritmos de propsito general comoQuicksort que se usan con mayor frecuencia debido a suQuicksort que se usan con mayor frecuencia debido a suadaptabilidad a una mayor variedad de aplicaciones.adaptabilidad a una mayor variedad de aplicaciones.
-
8/6/2019 Algotitmo de to Arreglado
16/21
Nota:Nota:
El ordenamiento por radix puedeEl ordenamiento por radix puedeejecutarse hasta en el doble deejecutarse hasta en el doble de
velocidad que Quicksort, pero no valevelocidad que Quicksort, pero no valela pena intentarlo si existe problemasla pena intentarlo si existe problemaspotenciales de espacio depotenciales de espacio de
almacenamiento o si las llaves son dealmacenamiento o si las llaves son detamao variable y/o no son aleatorias.tamao variable y/o no son aleatorias.
-
8/6/2019 Algotitmo de to Arreglado
17/21
Anlisis del MtodoAnlisis del Mtodo
Radix SortRadix Sort Suponemos que el vector V tieneSuponemos que el vector V tiene nn elementos.elementos.
Al ser el campo clave entero el numero urnas esAl ser el campo clave entero el numero urnas esd=10. Ad=10. Adems el numero de dijitos de que constadems el numero de dijitos de que constael campo clave va serel campo clave va ser k.k. Con estas premisas yCon estas premisas yteniendo en cuenta los dos bucles anidados de queteniendo en cuenta los dos bucles anidados de queconsta el algoritmo principal, tenemos que elconsta el algoritmo principal, tenemos que eltiempo de ejecucin estiempo de ejecucin es O(k*n+K*d).O(k*n+K*d).
Si las claves se consideran como ca
denas binarias
deSi las claves se consi
deran como ca
denas binarias
delongitudlongitud log(n)log(n)entoncesentonces K=log (n)K=log (n)y el mtodoy el mtodo
Radix Sort tomar un tiempo de ejecucin:Radix Sort tomar un tiempo de ejecucin:
O(nlog n)O(nlog n)
-
8/6/2019 Algotitmo de to Arreglado
18/21
TIEMPO 3nTIEMPO 3n
3n3n (falta formula general)(falta formula general) Si 'la v' es una constante, la clase de razSi 'la v' es una constante, la clase de raz
toma el tiempo lineal, la O (n). Note sintoma el tiempo lineal, la O (n). Note sinembargo que si todos los nmeros en laembargo que si todos los nmeros en laserie son diferentes entonces la v es alserie son diferentes entonces la v es almenos la O (n), entonces la O (menos la O (n), entonces la O (loglog (n)) pasa(n)) pasason necesario, la O (nlog (n))son necesario, la O (nlog (n)) -- el tiempo enel tiempo engeneral.general.
-
8/6/2019 Algotitmo de to Arreglado
19/21
ESPACIOESPACIO
Si una serie temporal es usada, elSi una serie temporal es usada, elespacio de trabajo suplementarioespacio de trabajo suplementario
usado es la O (n). Es posible hacen lausado es la O (n). Es posible hacen laclasificacin sobre cada posicin declasificacin sobre cada posicin dedgito in situ y luego slo la O (dgito in situ y luego slo la O (loglog (n))(n))el espacio es necesario para guardar lael espacio es necesario para guardar la
pista de las secciones de serie anpista de las secciones de serie anpara ser procesado, recurrentemente opara ser procesado, recurrentemente osobre un montn explcitosobre un montn explcito
-
8/6/2019 Algotitmo de to Arreglado
20/21
CdigoCdigo
public class radixSort {public class radixSort {public int [][] cam(int[]arr){public int [][] cam(int[]arr){if(arr.length == 0) return null;if(arr.length == 0) return null;int[][] np =int[][] np =
new int[arr.length][2]; //matricenew int[arr.length][2]; //matriceint[] q = new int[256];int[] q = new int[256];int i,j,k,l,f = 0;int i,j,k,l,f = 0;for(k=0;k
-
8/6/2019 Algotitmo de to Arreglado
21/21
PruebaPrueba
public class Prueba {public class Prueba {
public static void main (String[] args) {public static void main (String[] args) {
radixSort rs=new radixSort();radixSort rs=new radixSort();
int [] a={10,20,30,40,50,60,70,80,90,12};int [] a={10,20,30,40,50,60,70,80,90,12};System.out.println(rs.cam(a));System.out.println(rs.cam(a));
}}
}}