algotitmo de to arreglado

Upload: tex-albuja

Post on 07-Apr-2018

216 views

Category:

Documents


0 download

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));

    }}

    }}