algoritmo de ordenamiento shell

Upload: jheison

Post on 20-Feb-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Algoritmo de Ordenamiento Shell

    1/2

    Escuela Tecnolgica InstitutoTcnico Central La Salle

    Lgica de Programacin

    Presentado por:

    German Gmez Rocha

    Jheison Stic !e"arano Palacios

    #ircoles $$ de no%iem&re del '($)

    *lgoritmo de

    +rdenamiento Shell

    El presente trabajo tiene como objetivo

    conocer el concepto bsico del algoritmo de

    ordenamiento bajo el mtodo de SHELL.

    En esta presentacin veremos cuando se

    aplica este mtodo, como es su

    funcionamiento.

    El ordenamiento Shell (Shell sort en ingls es

    unalgoritmo de ordenamiento.El mtodo se

    denomina Shellen honor de su

    inventor !onald Shell. Su implementacin

    original, re"uiere #(n$ comparaciones e

    intercambios en el peor caso. %n cambio

    menor presentado en el libro de &. 'ratt

    produce una implementacin con unrendimiento de #(nlog$n en el peor caso.

    Esto es mejor "ue las #(n$ comparaciones

    re"ueridas por algoritmos simples pero peor

    "ue el ptimo #(nlog n. un"ue es fcil

    desarrollar un sentido intuitivo de cmo

    funciona este algoritmo, es mu) dif*cil anali+ar

    su tiempo de ejecucin.

    El Shell sort es una generali+acindel ordenamiento por insercin, teniendo en

    cuenta dos observaciones

    -. El ordenamiento por insercin es

    eficiente si la entrada est casi

    ordenada.

    $. El ordenamiento por insercin es

    ineficiente, en general, por"ue mueve

    los valores slo una posicin cada

    ve+.

    El algoritmo Shell sort mejora el ordenamiento

    por insercin comparando elementos

    separados por un espacio de varias

    posiciones. Esto permite "ue un elemento

    haga pasos ms grandes hacia su posicin

    esperada. Los pasos m/ltiples sobre los datos

    se hacen con tama0os de espacio cada ve+

    ms pe"ue0os. El /ltimo paso del Shell sort

    es un simple ordenamiento por insercin, pero

    para entonces, )a est garanti+ado "ue los

    datos del vector estn casi ordenados.

    Ejemplo

    1onsidere un valor pe"ue0o "ue est

    inicialmente almacenado en el final

    delvector"ue se "uiere ordenar de forma

    ascendente. %sando un ordenamiento #(n$

    como el ordenamiento de burbujao

    el ordenamiento por insercin, tomar

    apro2imadamente ncomparaciones e

    intercambios para mover este valor hacia el

    otro e2tremo del vector. El Shell sort primero

    mueve los valores usando tama0os de

    espacio gigantes, de manera "ue un valor

    pe"ue0o se mover bastantes posiciones

    hacia su posicin final, con slo unas pocas

    comparaciones e intercambios.

    https://es.wikipedia.org/wiki/Algoritmo_de_ordenamientohttps://es.wikipedia.org/wiki/Algoritmo_de_ordenamientohttps://es.wikipedia.org/wiki/Algoritmo_de_ordenamientohttps://es.wikipedia.org/w/index.php?title=Donald_Shell&action=edit&redlink=1https://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/wiki/Vector_(programaci%C3%B3n)https://es.wikipedia.org/wiki/Vector_(programaci%C3%B3n)https://es.wikipedia.org/wiki/Ordenamiento_de_burbujahttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/w/index.php?title=Donald_Shell&action=edit&redlink=1https://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Notaci%C3%B3n_de_Landauhttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/wiki/Vector_(programaci%C3%B3n)https://es.wikipedia.org/wiki/Ordenamiento_de_burbujahttps://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3nhttps://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
  • 7/24/2019 Algoritmo de Ordenamiento Shell

    2/2

    %no puede visuali+ar el algoritmo Shell sort

    de la siguiente manera colo"ue la lista en

    una tabla ) ordene las columnas (usando

    unordenamiento por insercin

    . 3epita este

    proceso, cada ve+ con un n/mero menor de

    columnas ms largas. l final, la tabla tiene

    slo una columna. 4ientras "ue transformar

    la lista en una tabla hace ms fcil

    visuali+arlo, el algoritmo propiamente hace su

    ordenamiento en conte2to (incrementando el

    *ndice por el tama0o de paso, esto es

    usando i += tamao_de_paso en ve+

    de i++ .

    'or ejemplo, considere una lista de n/meros

    como [ 13 14 94 33 82 25 59 94 65

    23 45 27 73 25 39 10 ] . Si

    comen+amos con un tama0o de paso de 5,

    podr*amos visuali+ar esto dividiendo la lista

    de n/meros en una tabla con 5 columnas.

    Esto "uedar*a as*

    13 14 94 33 82

    25 59 94 65 23

    45 27 73 25 39

    10

    Entonces ordenamos cada columna, lo "ue

    nos da

    10 14 73 25 23

    13 27 94 33 39

    25 59 94 65 82

    45

    1uando lo leemos de nuevo como una /nica

    lista de n/meros, obtenemos

    [ 10 14 73 25 23 13 27 94 33 39

    25 59 94 65 82 45 ] . "u*, el -6 "ue

    estaba en el e2tremo final, se ha movido

    hasta el e2tremo inicial. Esta lista es entonces

    de nuevo ordenada usando un ordenamientocon un espacio de 7 posiciones, ) despus un

    ordenamiento con un espacio de - posicin

    (ordenamiento por insercin simple.

    &E89:S

    Es un mtodo de ordenamiento

    relativamente simple ) tiene un

    mtodo de ejecucin aceptable.

    Es uno de los algoritmos ms rpidos

    "ue se pueden encontrar.

    Este tipo de ordenamiento no re"uiere de

    memoria adicional para su ejecucin.

    !ES&E89:S

    Su complejidad es dif*cil de calcular )

    depende mucho de la secuencia de

    incrementos "ue utilice.

    Es un algoritmo algo inestable, por"uese puede perder el orden relativo

    inicial con facilidad.

    1#81L%S;#8ES

    El tiempo "ue re"uiere este algoritmo,

    depende de "u sucesin de

    incrementos se use.

    Es importante recordar "ue es uno de

    los algoritmos mas rpidos, pero pococonfiables por su facilidad de perdida

    en su orden de b/s"ueda, ser*a

    importante reali+ar pruebas

    e2perimentales ) de esta forma

    determinar su fiabilidad.

    El Shell sort lleva este nombre en honor a su

    inventor, !onald Shell, "ue lo public en

    -