SlideShare una empresa de Scribd logo
1 de 16
Algoritmos de Ordenamiento   ,[object Object],[object Object]
ESTRUCTURA  DE DATOS RONALD BARRERA L. ROLANDO QUIJIJE
El método de sacudida es  una optimización del método de intercambio directo o burbuja . En este algoritmo cada pasada tiene dos etapas.  En la primera etapa  "de derecha a izquierda" se trasladan los elementos más pequeños hacia la parte izquierda del arreglo, almacenando en una variable la posición del último elemento intercambiado.  Ordenamiento  ESTATICO I método de sacudida (Shaker sort)
En  la segunda etapa  "de izquierda a derecha" se trasladan los elementos más grandes hacia la parte derecha del arreglo,almacenando en otra variable la posición del último elemento intercambiado. El algoritmo termina cuando en una etapa no se producen intercambios o bien,cuando el contenido de la variable que almacena el extremo izquierdo del arreglo es mayor que el contenido de la variable que almacena el extremo derecho.
void sacudida (itemType a[], int N){     int i, j, izq, der, aux;       izq = 2; der = N; j = N;       do     {        for(i = der; i >= izq; i--)              if (a[i - 1] > a[i])             {  swap (a, i, i -1);                 j = i;             }        izq= j + 1;        for(i = izq; i <= der; i++)             if (a[i -1] > a[i])             { swap (a, i, i -1)                j = i;             }        der= j - 1;     } while (izq <= der);   } de sacudida (Shaker sort)
Ordenamiento  ESTATICO   II Ordenamiento por el  El método Shell es una versión mejorada del método de inserción directa . Este método también se conoce con el nombre de inserción con incrementos decrecientes. En el método de ordenación por inserción directa cada elemento se compara para su ubicación correcta en el arreglo, con los elementos que se encuentran en la parte izquierda del mismo. Si el elemento a insertares más pequeño que el grupo de elementos que se encuentran a su izquierda,es necesario efectuar entonces varias comparaciones antes de su ubicación.  método Shell
Shell propone que las comparaciones entre elementos se efectúen con saltos de mayor tamaño pero con incrementos decrecientes, así, los elementos quedarán ordenados en el arreglo más rápidamente.  void shellsort (itemType a[], int N) {     int i, j, h;     itemType v;     for (h = 1; h <= N/9; h = 3 * h + 1);     for (i = h +1; i <= N; i += 1)     {         v = a[i]; j = i;         while (j > h &&a[j- h] > v)            { a[j]= a[j - h]; j -= h;}          a[j] = v;      } }
ORDENAMIENTO  DINAMICO  II Quicksort ,[object Object],[object Object],[object Object]
[object Object],[object Object]
void quicksort (itemType a[], int left, int right) {    int i; Stack<int> sf(50);    for (;;)    {        while (right > left)        {            i = partition (a, left, right);            if (i - left > right - i)            {    sf.push (left);sf.push (i - 1); left = i + 1; }            else            {    sf.push (i + 1); sf.push (right); right = i - 1; }        }        if (sf.empty ()) break;        right = sf.pop (); left = sf.pop ();    } }
El ordenamiento por fusión consiste en combinar dos estructuras de datos ordenadas para crear una estructura ordenada de mayor tamaño. En muchas aplicaciones de procesamiento de  información se almacena un archivo ordenado al que se le añaden nuevos elementos de manera regular.  Normalmente se juntan cierta cantidad de entradas nuevas que posteriormente se agregan al archivo principal para proceder finalmente a reordenar todo el archivo. Este tipo de aplicaciones están especialmente hechas para fusión: Una estrategia mejor consiste en ordenar el conjunto de entradas nuevas y entonces fusionarlo con el archivo principal. Ordenamiento  DINAMICO  II por fusión (Mergesort)
Fusión Para comenzar, supongamos que contamos con dos arreglos de enteros ordenados a[1], ..., a[M] y b[1], ..., b[N] y deseamos fusionarlos en un tercer arreglo c[1], ..., c[M+N]. Entonces podemos utilizar el siguiente algoritmo: i = 1; j = 1; a[M+1] = itemMAX; b[N+1] = itemMAX; for (k = 1; k <= M + N; k++)    c[k] = (a[i] < b[j]) ? a[i++] : b[j++];
Fusión con listas encadenadas Sería deseable contar con un método que ordenara las listas en sitio, en vez de utilizar espacio extra proporcional a el tamaño del archivo fusionado. Realizar esto es factible pero resulta muy complicado lograrlo con una estructura de datos de arreglo por lo que optaremos por una lista encadenada que se adapta mejor a las exigencias de este algoritmo. struct node    {itemType key; struct node *next; }; struct node *z;
struct node *merge( struct node *a, struct node *b) {    struct node *c;    c = z;    do        if (a->key <= b->key)            {c->next = a; c = a; a = a->next; }        else            {c->next = b; c = b; b = b->next; }    while (c->key != z->key);    c = z->next; z ->next = z;    return c; } Se asume que las listas cuentan con un nodo cola centinela denominado z y que el elemento siguiente de este nodo apunta a sí mismo y el valor de su llave es igual a itemMAX;
Ordenamiento por fusión con listas struct node *mergesort( struct node *c) {    struct node *a, *b;    if (c->next != z)    {        a = c; b= c->next->next->next;        while (b != z)            {c = c->next; b = b->next->next;}        b = c->next; c->next = z;        return merge( mergesort (a), mergesort (b));    }    return c; }
F I N

Más contenido relacionado

La actualidad más candente

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
Fuerza Auriazul
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
linkinpark03
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
Huascar Génere
 

La actualidad más candente (20)

Ordenamiento por insercion
Ordenamiento por insercionOrdenamiento por insercion
Ordenamiento por insercion
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Arreglos - Assembler
Arreglos - AssemblerArreglos - Assembler
Arreglos - Assembler
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 

Destacado

Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
Edwin Varela
 
Lección 2 . Uso de operadores en R
Lección 2 .  Uso de operadores en RLección 2 .  Uso de operadores en R
Lección 2 . Uso de operadores en R
Carlos Pérez Lara
 
Insercion directa
Insercion directaInsercion directa
Insercion directa
abelpit2
 
Metodo burbuja jenny v.
Metodo burbuja   jenny v.Metodo burbuja   jenny v.
Metodo burbuja jenny v.
jhosep2013
 

Destacado (20)

Algortimos De Ordenamiento
Algortimos De OrdenamientoAlgortimos De Ordenamiento
Algortimos De Ordenamiento
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Lección 2 . Uso de operadores en R
Lección 2 .  Uso de operadores en RLección 2 .  Uso de operadores en R
Lección 2 . Uso de operadores en R
 
Merge Sort
Merge SortMerge Sort
Merge Sort
 
Inecuaciones en r uedees
Inecuaciones en r uedeesInecuaciones en r uedees
Inecuaciones en r uedees
 
Bubble Sort
Bubble SortBubble Sort
Bubble Sort
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Método de Ordenamiento Sort Shell
Método de Ordenamiento Sort ShellMétodo de Ordenamiento Sort Shell
Método de Ordenamiento Sort Shell
 
Horoscopo test1
Horoscopo test1Horoscopo test1
Horoscopo test1
 
Estadística con Lenguaje R: Sesión 8
Estadística con Lenguaje R: Sesión 8Estadística con Lenguaje R: Sesión 8
Estadística con Lenguaje R: Sesión 8
 
Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6
 
Introduccion al Programa R
Introduccion al Programa RIntroduccion al Programa R
Introduccion al Programa R
 
TIPOS DE ARCHIVOS
TIPOS DE ARCHIVOSTIPOS DE ARCHIVOS
TIPOS DE ARCHIVOS
 
Insercion directa
Insercion directaInsercion directa
Insercion directa
 
Merge sort
Merge sortMerge sort
Merge sort
 
Como crear un merge (sobres y cartas personalizadas) por ljf 2012
Como crear un merge (sobres y cartas personalizadas) por ljf 2012Como crear un merge (sobres y cartas personalizadas) por ljf 2012
Como crear un merge (sobres y cartas personalizadas) por ljf 2012
 
Merge Sort
Merge SortMerge Sort
Merge Sort
 
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 
Metodo burbuja jenny v.
Metodo burbuja   jenny v.Metodo burbuja   jenny v.
Metodo burbuja jenny v.
 

Similar a Metodos De Ordenamiento

Estructura de dato unidad 5
Estructura de dato unidad 5Estructura de dato unidad 5
Estructura de dato unidad 5
lenithoz
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
ikky2345
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
sirekarol
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
mishuhot
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
Maiky Kobatakane
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
Monica Canaza
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
Daniel Guaycha
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
VivianaG
 

Similar a Metodos De Ordenamiento (20)

Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Unidad cinco estructura de datos
Unidad cinco estructura de datosUnidad cinco estructura de datos
Unidad cinco estructura de datos
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Estructura de dato unidad 5
Estructura de dato unidad 5Estructura de dato unidad 5
Estructura de dato unidad 5
 
Josemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodosJosemanueunidad4 investigacionmetodos
Josemanueunidad4 investigacionmetodos
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
UNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busquedaUNIDAD IV - metodos de busqueda
UNIDAD IV - metodos de busqueda
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
Algoritmos divide y vencerás
Algoritmos divide y vencerásAlgoritmos divide y vencerás
Algoritmos divide y vencerás
 
Ordenamiento ppt
Ordenamiento pptOrdenamiento ppt
Ordenamiento ppt
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 

Más de lichic

Manejo Eventos
Manejo EventosManejo Eventos
Manejo Eventos
lichic
 
Algoritmos De Ordenacion
Algoritmos De OrdenacionAlgoritmos De Ordenacion
Algoritmos De Ordenacion
lichic
 
Cap8 Programacion
Cap8 ProgramacionCap8 Programacion
Cap8 Programacion
lichic
 
Cap1 Introduccion A La Robotica
Cap1 Introduccion A La RoboticaCap1 Introduccion A La Robotica
Cap1 Introduccion A La Robotica
lichic
 
Sistemas
SistemasSistemas
Sistemas
lichic
 
Introduccionseniales
IntroduccionsenialesIntroduccionseniales
Introduccionseniales
lichic
 
Series De Fourier
Series De FourierSeries De Fourier
Series De Fourier
lichic
 
Graphapp
GraphappGraphapp
Graphapp
lichic
 
13 Creacion De Una Libreria Propia
13 Creacion De Una Libreria Propia13 Creacion De Una Libreria Propia
13 Creacion De Una Libreria Propia
lichic
 
16 Archivos
16 Archivos16 Archivos
16 Archivos
lichic
 
14 Caracteres Y Cadenas
14 Caracteres Y Cadenas14 Caracteres Y Cadenas
14 Caracteres Y Cadenas
lichic
 
Arreglos
ArreglosArreglos
Arreglos
lichic
 
Desarrollo Programas Estructurados
Desarrollo Programas EstructuradosDesarrollo Programas Estructurados
Desarrollo Programas Estructurados
lichic
 
Intro A Computadoras
Intro A ComputadorasIntro A Computadoras
Intro A Computadoras
lichic
 
fundamentos de programacio
fundamentos de programaciofundamentos de programacio
fundamentos de programacio
lichic
 
Toma%2 Bde%2 Bdecisiones
Toma%2 Bde%2 BdecisionesToma%2 Bde%2 Bdecisiones
Toma%2 Bde%2 Bdecisiones
lichic
 
La%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 Bglobal
La%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 BglobalLa%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 Bglobal
La%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 Bglobal
lichic
 
1. %2 Bcultura
1. %2 Bcultura1. %2 Bcultura
1. %2 Bcultura
lichic
 
U 3 Ae. %2 Bentorno%2 Bempresarial
U 3 Ae. %2 Bentorno%2 BempresarialU 3 Ae. %2 Bentorno%2 Bempresarial
U 3 Ae. %2 Bentorno%2 Bempresarial
lichic
 
U 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 N
U 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 NU 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 N
U 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 N
lichic
 

Más de lichic (20)

Manejo Eventos
Manejo EventosManejo Eventos
Manejo Eventos
 
Algoritmos De Ordenacion
Algoritmos De OrdenacionAlgoritmos De Ordenacion
Algoritmos De Ordenacion
 
Cap8 Programacion
Cap8 ProgramacionCap8 Programacion
Cap8 Programacion
 
Cap1 Introduccion A La Robotica
Cap1 Introduccion A La RoboticaCap1 Introduccion A La Robotica
Cap1 Introduccion A La Robotica
 
Sistemas
SistemasSistemas
Sistemas
 
Introduccionseniales
IntroduccionsenialesIntroduccionseniales
Introduccionseniales
 
Series De Fourier
Series De FourierSeries De Fourier
Series De Fourier
 
Graphapp
GraphappGraphapp
Graphapp
 
13 Creacion De Una Libreria Propia
13 Creacion De Una Libreria Propia13 Creacion De Una Libreria Propia
13 Creacion De Una Libreria Propia
 
16 Archivos
16 Archivos16 Archivos
16 Archivos
 
14 Caracteres Y Cadenas
14 Caracteres Y Cadenas14 Caracteres Y Cadenas
14 Caracteres Y Cadenas
 
Arreglos
ArreglosArreglos
Arreglos
 
Desarrollo Programas Estructurados
Desarrollo Programas EstructuradosDesarrollo Programas Estructurados
Desarrollo Programas Estructurados
 
Intro A Computadoras
Intro A ComputadorasIntro A Computadoras
Intro A Computadoras
 
fundamentos de programacio
fundamentos de programaciofundamentos de programacio
fundamentos de programacio
 
Toma%2 Bde%2 Bdecisiones
Toma%2 Bde%2 BdecisionesToma%2 Bde%2 Bdecisiones
Toma%2 Bde%2 Bdecisiones
 
La%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 Bglobal
La%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 BglobalLa%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 Bglobal
La%2 Badministracion%2 Ben%2 Bun%2 Bentorno%2 Bglobal
 
1. %2 Bcultura
1. %2 Bcultura1. %2 Bcultura
1. %2 Bcultura
 
U 3 Ae. %2 Bentorno%2 Bempresarial
U 3 Ae. %2 Bentorno%2 BempresarialU 3 Ae. %2 Bentorno%2 Bempresarial
U 3 Ae. %2 Bentorno%2 Bempresarial
 
U 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 N
U 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 NU 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 N
U 2 Ae. %2 Bevolucion%2 Bde%2 Bla%2 Badministaci%25 C3%2593 N
 

Metodos De Ordenamiento

  • 1.
  • 2. ESTRUCTURA DE DATOS RONALD BARRERA L. ROLANDO QUIJIJE
  • 3. El método de sacudida es una optimización del método de intercambio directo o burbuja . En este algoritmo cada pasada tiene dos etapas. En la primera etapa &quot;de derecha a izquierda&quot; se trasladan los elementos más pequeños hacia la parte izquierda del arreglo, almacenando en una variable la posición del último elemento intercambiado. Ordenamiento ESTATICO I método de sacudida (Shaker sort)
  • 4. En la segunda etapa &quot;de izquierda a derecha&quot; se trasladan los elementos más grandes hacia la parte derecha del arreglo,almacenando en otra variable la posición del último elemento intercambiado. El algoritmo termina cuando en una etapa no se producen intercambios o bien,cuando el contenido de la variable que almacena el extremo izquierdo del arreglo es mayor que el contenido de la variable que almacena el extremo derecho.
  • 5. void sacudida (itemType a[], int N){     int i, j, izq, der, aux;     izq = 2; der = N; j = N;     do     {        for(i = der; i >= izq; i--)              if (a[i - 1] > a[i])             {  swap (a, i, i -1);                 j = i;             }        izq= j + 1;        for(i = izq; i <= der; i++)             if (a[i -1] > a[i])             { swap (a, i, i -1)                j = i;             }        der= j - 1;     } while (izq <= der); } de sacudida (Shaker sort)
  • 6. Ordenamiento ESTATICO II Ordenamiento por el El método Shell es una versión mejorada del método de inserción directa . Este método también se conoce con el nombre de inserción con incrementos decrecientes. En el método de ordenación por inserción directa cada elemento se compara para su ubicación correcta en el arreglo, con los elementos que se encuentran en la parte izquierda del mismo. Si el elemento a insertares más pequeño que el grupo de elementos que se encuentran a su izquierda,es necesario efectuar entonces varias comparaciones antes de su ubicación. método Shell
  • 7. Shell propone que las comparaciones entre elementos se efectúen con saltos de mayor tamaño pero con incrementos decrecientes, así, los elementos quedarán ordenados en el arreglo más rápidamente. void shellsort (itemType a[], int N) {     int i, j, h;     itemType v;     for (h = 1; h <= N/9; h = 3 * h + 1);     for (i = h +1; i <= N; i += 1)     {         v = a[i]; j = i;         while (j > h &&a[j- h] > v)            { a[j]= a[j - h]; j -= h;}          a[j] = v;      } }
  • 8.
  • 9.
  • 10. void quicksort (itemType a[], int left, int right) {    int i; Stack<int> sf(50);    for (;;)    {        while (right > left)        {            i = partition (a, left, right);            if (i - left > right - i)            {    sf.push (left);sf.push (i - 1); left = i + 1; }            else            {    sf.push (i + 1); sf.push (right); right = i - 1; }        }        if (sf.empty ()) break;        right = sf.pop (); left = sf.pop ();    } }
  • 11. El ordenamiento por fusión consiste en combinar dos estructuras de datos ordenadas para crear una estructura ordenada de mayor tamaño. En muchas aplicaciones de procesamiento de  información se almacena un archivo ordenado al que se le añaden nuevos elementos de manera regular. Normalmente se juntan cierta cantidad de entradas nuevas que posteriormente se agregan al archivo principal para proceder finalmente a reordenar todo el archivo. Este tipo de aplicaciones están especialmente hechas para fusión: Una estrategia mejor consiste en ordenar el conjunto de entradas nuevas y entonces fusionarlo con el archivo principal. Ordenamiento DINAMICO II por fusión (Mergesort)
  • 12. Fusión Para comenzar, supongamos que contamos con dos arreglos de enteros ordenados a[1], ..., a[M] y b[1], ..., b[N] y deseamos fusionarlos en un tercer arreglo c[1], ..., c[M+N]. Entonces podemos utilizar el siguiente algoritmo: i = 1; j = 1; a[M+1] = itemMAX; b[N+1] = itemMAX; for (k = 1; k <= M + N; k++)    c[k] = (a[i] < b[j]) ? a[i++] : b[j++];
  • 13. Fusión con listas encadenadas Sería deseable contar con un método que ordenara las listas en sitio, en vez de utilizar espacio extra proporcional a el tamaño del archivo fusionado. Realizar esto es factible pero resulta muy complicado lograrlo con una estructura de datos de arreglo por lo que optaremos por una lista encadenada que se adapta mejor a las exigencias de este algoritmo. struct node    {itemType key; struct node *next; }; struct node *z;
  • 14. struct node *merge( struct node *a, struct node *b) {    struct node *c;    c = z;    do        if (a->key <= b->key)            {c->next = a; c = a; a = a->next; }        else            {c->next = b; c = b; b = b->next; }    while (c->key != z->key);    c = z->next; z ->next = z;    return c; } Se asume que las listas cuentan con un nodo cola centinela denominado z y que el elemento siguiente de este nodo apunta a sí mismo y el valor de su llave es igual a itemMAX;
  • 15. Ordenamiento por fusión con listas struct node *mergesort( struct node *c) {    struct node *a, *b;    if (c->next != z)    {        a = c; b= c->next->next->next;        while (b != z)            {c = c->next; b = b->next->next;}        b = c->next; c->next = z;        return merge( mergesort (a), mergesort (b));    }    return c; }
  • 16. F I N