2
Lo más leído
3
Lo más leído
23
Lo más leído
Métodos de Ordenamiento
Codificados en C++
ORDENAMIENTO
Es la operación de arreglar los registros de una tabla en algún
orden secuencial de acuerdo a un criterio de ordenamiento.
El ordenamiento se efectúa con base en el valor de algún campo
en un registro.
El propósito principal de un ordenamiento es el de facilitar las
búsquedas de los miembros del conjunto ordenado.
El ordenar un grupo de datos significa mover los datos o sus
referencias para que queden en una secuencia tal que
represente un orden, el cual puede ser numérico, alfabético o
incluso alfanumérico, ascendente o descendente.
1. ORDENAMIENTO POR SELECCIÓN
DESCRIPCIÓN.
• Buscas el elemento más pequeño de la lista.
• Lo intercambias con el elemento ubicado en la primera posición
de la lista.
• Buscas el segundo elemento más pequeño de la lista.
• Lo intercambias con el elemento que ocupa la segunda posición
en la lista.
• Repites este proceso hasta que hayas ordenado toda la lista.
ANÁLISIS DEL ALGORITMO.
• Requerimientos de Memoria:
Al igual que el ordenamiento burbuja, este algoritmo sólo
necesita una variable adicional para realizar los intercambios.
• Tiempo de Ejecución:
El ciclo externo se ejecuta n veces para una lista de n
elementos. Cada búsqueda requiere comparar todos los
elementos no clasificados.
Ventajas:
• Fácil implementación.
• No requiere memoria adicional.
• Rendimiento constante: poca diferencia entre el peor y el
mejor caso.
Desventajas:
• Lento.
• Realiza numerosas comparaciones.
Codificación en C++
2. ORDENAMIENTO POR INSERCIÓN DIRECTA
DESCRIPCIÓN.
El algoritmo de ordenación por el método de inserción directa es un
algoritmo relativamente sencillo y se comporta razonablemente bien en gran
cantidad de situaciones. Completa la tripleta de los algoritmos de ordenación
más básicos y de orden de complejidad cuadrático, junto con Selection Sort y
Bubble Sort.
Se basa en intentar construir una lista ordenada en el interior del array a
ordenar. De estos tres algoritmos es el que mejor resultado da a efectos
prácticos. Realiza una cantidad de comparaciones bastante equilibrada con
respecto a los intercambios, y tiene un par de características que lo hacen
aventajar a los otros dos en la mayor parte de las situaciones.
Este algoritmo se basa en hacer comparaciones, así que para que realice
su trabajo de ordenación son imprescindibles dos cosas: un array o estructura
similar de elementos comparables y un criterio claro de comparación, tal que
dados dos elementos nos diga si están en orden o no.
• En cada iteración del ciclo externo los elementos 0 a i forman una lista
ordenada.
ANÁLISIS DEL ALGORITMO.
• Estabilidad: Este algoritmo nunca intercambia registros con claves iguales.
Por lo tanto es estable.
• Requerimientos de Memoria: Una variable adicional para realizar los
intercambios.
• Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se
ejecuta n-1 veces. El ciclo interno se ejecuta como máximo una vez en la
primera iteración, 2 veces en la segunda, 3 veces en la tercera, etc.
Ventajas:
• Fácil implementación.
• Requerimientos mínimos de memoria.
Desventajas:
• Lento.
• Realiza numerosas comparaciones.
Este también es un algoritmo lento, pero puede ser de
utilidad para listas que están ordenadas o semi-ordenadas,
porque en ese caso realiza muy pocos desplazamientos.
Ordenamiento en C++
3. MÉTODO DE ORDENAMIENTO POR INSERCIÓN
BINARIA
El método de ordenación por 'inserción binaria'' es una
mejora del método de inserción directa.
Para lograr esta mejora se recurre a una búsqueda
binaria en lugar de una búsqueda secuencial para insertar un
elemento en la parte izquierda del arreglo, que ya se
encuentra ordenado.
El resto del procedimiento es similar al de inserción
directa, es decir, se repite este mismo procedimiento desde el
segundo término hasta el último elemento.
ALGORITMO / INSERCION BINARIA (A, N)
{
para (i=2 hasta N)
{
aux = A[i];
izq=1;
der=i-1;
mientras (izq<=der)
{
m=[parte entera ((izq+der)/2)];
si (aux<A[M])
{
der=m-1;
}
si no
{
izq=m+1;
}
}
j=i-1;
mientras (j>=izq)
{
A[j+1]=A[j];
j=j-11;
}
A[izq]=auz;
}
4. ORDENAMIENTO POR EL MÉTODO DE SHELL
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 insertar es 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.
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.
El Shell sort es una generalización del ordenamiento por inserción, teniendo
en cuenta dos observaciones:
1. El ordenamiento por inserción es eficiente si la entrada está "casi
ordenada".
2. El ordenamiento por inserción es ineficiente, en general, porque mueve
los valores sólo una posición cada vez. El algoritmo Shell sort mejora el
ordenamiento por inserción comparando elementos separados por un
espacio de varias posiciones. Esto permite que un elemento haga "pasos
más grandes" hacia su posición esperada.
Los pasos múltiples sobre los datos se hacen con tamaños de espacio
cada vez más pequeños. El último paso del Shell sort es un simple
ordenamiento por inserción, pero para entonces, ya está garantizado que los
datos del vector están casi ordenados. El Shell sort lleva este nombre en
honor a su inventor, Donald Shell, que lo publicó en 1959.
Ordenamiento en C++
Ordenamiento en C++
ORDENAMIENTO QUICK SORT
El ordenamiento por partición (Quick Sort) se puede definir en
una forma más conveniente como un procedimiento recursivo. Tiene
aparentemente la propiedad de trabajar mejor para elementos de
entrada desordenados completamente, que para elementos semi-
ordenados.
Esta situación es precisamente la opuesta al ordenamiento de
burbuja. Este tipo de algoritmos se basa en la técnica "divide y
vencerás", o sea es más rápido y fácil ordenar dos arreglos o listas de
datos pequeños, que un arreglo o lista grande.
Normalmente al inicio de la ordenación se escoge un elemento
aproximadamente en la mitad del arreglo, así al empezar a ordenar, se
debe llegar a que el arreglo este ordenado respecto al punto de división
o la mitad del arreglo.
Se podrá garantizar que los elementos a la izquierda de la
mitad son los menores y los elementos a la derecha son los mayores.
Los siguientes pasos son llamados recursivos con el propósito de
efectuar la ordenación por partición al arreglo izquierdo y al arreglo
derecho, que se obtienen de la primera fase.
El tamaño de esos arreglos en promedio se reduce a la mitad.
Así se continúa hasta que el tamaño de los arreglos a ordenar es 1, es
decir, todos los elementos ya están ordenados.
En promedio para todos los elementos de entrada de tamaño
n, el método hace O (n logn) comparaciones, el cual es relativamente
eficiente.
Ordenamiento en C++
Ordenamiento en C++
ORDENAMIENTO HEAP SORT
El ordenamiento por montículos (Heap sort) es un algoritmo de ordenación no
recursivo, no estable, con complejidad computacional O(n log n).
Este algoritmo consiste en almacenar todos los elementos del vector a ordenar
en un montículo (heap), y luego extraer el nodo que queda como nodo raíz del
montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado.
Basa su funcionamiento en una propiedad de los montículos, por la cual, la
cima contiene siempre el menor elemento (o el mayor, según se haya definido el
montículo) de todos los almacenados en él.
El significado de heap en ciencia computacional es el de una cola de prioridades (priority
queue). Tiene las siguientes características:
• Un heap es un arreglo de n posiciones ocupado por los elementos de la
cola.(Nota: se utiliza un arreglo que inicia en la posición 1 y no en cero, de tal
manera que al implementarla en C se tienen n+1 posiciones en el arreglo.)
• Se mapea un árbol binario de tal manera en el arreglo que el nodo en la
posición i es el padre de los nodos en las posiciones (2*i) y (2*i+1).
• El valor en un nodo es mayor o igual a los valores de sus hijos. Por consiguiente,
el nodo padre tiene el mayor valor de todo su subárbol.
PROCEDIMIENTO
Heap Sort consiste esencialmente en:
• Convertir el arreglo en un heap.
• Construir un arreglo ordenado de atrás hacia adelante
(mayor a menor)repitiendo los siguientes pasos:
• Sacar el valor máximo en el heap (el de la posición 1)
• Poner ese valor en el arreglo ordenado
• Reconstruir el heap con un elemento menos
• Utilizar el mismo arreglo para el heap y el arreglo
ordenado.
Ordenamiento en C++
Fuente:
UNIVERSIDAD CONTINENTAL DE CIENCIAS E INGENIERÍAS
http://es.scribd.com/doc/1739233/Ordenamiento-en-C

Más contenido relacionado

PDF
Estructuras de datos osvaldo cairo
PPT
Estructuras en c++
PPTX
Metodos de ordenamiento
DOC
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
PDF
EJERCICIOS DE ALGORITMOS RESUELTOS
PDF
Programación 1: funciones en C
PPTX
Búsqueda secuencial y binaria
PPTX
Algoritmos Tiposde datos
Estructuras de datos osvaldo cairo
Estructuras en c++
Metodos de ordenamiento
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
EJERCICIOS DE ALGORITMOS RESUELTOS
Programación 1: funciones en C
Búsqueda secuencial y binaria
Algoritmos Tiposde datos

La actualidad más candente (20)

PPS
Pilas y colas
PPTX
Pilas, colas, y listas estructura de datos
DOCX
Cuadro sinóptico estructuras de datos y su clasificación
PPTX
Listas doblemente enlazadas
PPTX
Estructura de datos: lista, pilas y colas
PPTX
Colas en programacion
PPTX
Tipos de listas en estructura de datos
PPTX
Archivos Secuenciales Indexados
PPTX
Operaciones con matrices
PPTX
Estructura de Datos - Unidad 6 Metodos de busqueda
PPTX
Método de Búsqueda Hash
PDF
Presentacion Python
PDF
Arboles M-Way, 2-3 y 2-3-4
PDF
Arboles mate discreta
DOCX
Listas como estructura de datos..
PPT
Ejercicios
DOCX
Pilas como estructura de datos..
PPT
Arboles Binarios
DOCX
Cuadro comparativo de softwares de de metodos numericos
PPTX
Listas,pilas y colas Estructura de Datos
Pilas y colas
Pilas, colas, y listas estructura de datos
Cuadro sinóptico estructuras de datos y su clasificación
Listas doblemente enlazadas
Estructura de datos: lista, pilas y colas
Colas en programacion
Tipos de listas en estructura de datos
Archivos Secuenciales Indexados
Operaciones con matrices
Estructura de Datos - Unidad 6 Metodos de busqueda
Método de Búsqueda Hash
Presentacion Python
Arboles M-Way, 2-3 y 2-3-4
Arboles mate discreta
Listas como estructura de datos..
Ejercicios
Pilas como estructura de datos..
Arboles Binarios
Cuadro comparativo de softwares de de metodos numericos
Listas,pilas y colas Estructura de Datos
Publicidad

Destacado (10)

PDF
Algoritmo, Ordenacion y Búsqueda
PPTX
Ordenamiento shell
PPTX
Ordenamiento shell
PPT
Método de Ordenamiento Sort Shell
DOCX
Busqueda lineal y busqueda binaria
PPT
Metodos De Ordenamiento
PPTX
Code blocks & lenguaje c++
PDF
Algortimos De Ordenamiento
PDF
Manual Code::Blocks lenguaje C++
PDF
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
Algoritmo, Ordenacion y Búsqueda
Ordenamiento shell
Ordenamiento shell
Método de Ordenamiento Sort Shell
Busqueda lineal y busqueda binaria
Metodos De Ordenamiento
Code blocks & lenguaje c++
Algortimos De Ordenamiento
Manual Code::Blocks lenguaje C++
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
Publicidad

Similar a Ordenamiento en C++ (20)

DOCX
Ordenamientos de vectores
DOCX
Metodos de odenamiento de vctores
DOC
1_Metodos.doc
PDF
metodos-de-ordenamiento.pdf
DOCX
Josemanueunidad4 investigacionmetodos
PDF
UNIDAD IV - metodos de busqueda
PPTX
Algoritmos para Ordenación, Búsqueda e Intercalación internas.pptx
PPTX
Estructura de Datos - Unidad 5 metodos de ordenamiento
PPTX
Presentacion
PPTX
Unidad 5
PPTX
PPTX
DOCX
Algoritmos Ordenamiento
PPTX
Estructura de dato unidad 5
PPTX
Reny Galaviz y Jaime Marin Análisis de Algoritmo
PPTX
Reny galavs jaimemarin
PPT
Método de ordenamiento sort
PPTX
Ordenacion y busqueda
Ordenamientos de vectores
Metodos de odenamiento de vctores
1_Metodos.doc
metodos-de-ordenamiento.pdf
Josemanueunidad4 investigacionmetodos
UNIDAD IV - metodos de busqueda
Algoritmos para Ordenación, Búsqueda e Intercalación internas.pptx
Estructura de Datos - Unidad 5 metodos de ordenamiento
Presentacion
Unidad 5
Algoritmos Ordenamiento
Estructura de dato unidad 5
Reny Galaviz y Jaime Marin Análisis de Algoritmo
Reny galavs jaimemarin
Método de ordenamiento sort
Ordenacion y busqueda

Más de compumet sac (20)

PDF
DAFA M2 Lectura 8a: RCD-038-2013-OEFA
PDF
DAFA M2 Lectura 8: Política Nacional del Ambiente
PDF
DAFA M2 Lectura 07: Reflexiones Sobre OEFA
PDF
DAFA Lectura 06: Plana 2011-2021
PDF
DIRSOCYM
PDF
SIG-G3-M3 Lectura 10: DS-004-2014 PRODUCE
PDF
DAFA M1 Lectura 04 : Código de Etica del Auditor Gubernamental del Perú
PDF
DAFA M1 Lectura 03 : Modifican Normas y Manual de Auditoría Gubernamental,
PDF
SIG-FB4, Modulo II - Lectura 5b OHSAS 18002
PDF
SIG-FB4, Modulo II - Lectura 5a OHSAS 18001
PDF
SIG-FB4, Modulo II, Lectura 04 Directrices de la OIT
PDF
SIG-FB4, Modulo II, Tema 02 Gestión de la Salud en el Trabajo
PDF
Diplomatura Sistema de Gestión SIG-FB4 - 13Junio2015
PDF
AyC M3 Lectura 09 > Gestion de Inventarios
PDF
DS 040-2014-EM > Reglamento de Proteccion Ambiental
PDF
AyC M2 Lectura 08b > RM-004-2014-MINSA Modif_312
PDF
AyC M2 Lectura 08a > RM-312-2011-MINSA
PDF
CdP m3Lectura 12 : Fe de Erratas PNDP
PDF
CdP m3 Lectura 12 : PNDP
PDF
AyC m2 Lectura 7 : OHSAS 18001
DAFA M2 Lectura 8a: RCD-038-2013-OEFA
DAFA M2 Lectura 8: Política Nacional del Ambiente
DAFA M2 Lectura 07: Reflexiones Sobre OEFA
DAFA Lectura 06: Plana 2011-2021
DIRSOCYM
SIG-G3-M3 Lectura 10: DS-004-2014 PRODUCE
DAFA M1 Lectura 04 : Código de Etica del Auditor Gubernamental del Perú
DAFA M1 Lectura 03 : Modifican Normas y Manual de Auditoría Gubernamental,
SIG-FB4, Modulo II - Lectura 5b OHSAS 18002
SIG-FB4, Modulo II - Lectura 5a OHSAS 18001
SIG-FB4, Modulo II, Lectura 04 Directrices de la OIT
SIG-FB4, Modulo II, Tema 02 Gestión de la Salud en el Trabajo
Diplomatura Sistema de Gestión SIG-FB4 - 13Junio2015
AyC M3 Lectura 09 > Gestion de Inventarios
DS 040-2014-EM > Reglamento de Proteccion Ambiental
AyC M2 Lectura 08b > RM-004-2014-MINSA Modif_312
AyC M2 Lectura 08a > RM-312-2011-MINSA
CdP m3Lectura 12 : Fe de Erratas PNDP
CdP m3 Lectura 12 : PNDP
AyC m2 Lectura 7 : OHSAS 18001

Último (20)

PPT
flujo de caja 2 para la evaluacion de proyectos
PDF
EVALUACIÓN 1_REFERENCIAPIR_FASE 1_2024.pdf
PPTX
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
PDF
Diseño y Utiliación del HVAC Aire Acondicionado
PPTX
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
PPTX
Expo petroelo 2do ciclo.psssssssssssssptx
PDF
La 5ª Edición del Manual de Ingeniería de Sistemas ( SEH5E ) como base d...
PDF
MODULO 1 Base Legal Nacional y sus aplicaciones.pdf
PDF
manual-sap-gratuito _ para induccion de inicio a SAP
PDF
IMPORTANCIA DE CARNE DE COBAYOS- CUYES CRI
PDF
SESION 9 seguridad IZAJE DE CARGAS.pdf ingenieria
PDF
Infraestructuras en la seguridad vial.pdf
PPTX
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
PPTX
Instalaciones Electricas.pptx cables electricos
PPTX
TRABAJOS DE ALTO RIESGO ELEC - LOTO.pptx
PPTX
EQUIPOS DE PROTECCION PERSONAL - LEY LABORAL.pptx
PPTX
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
PDF
manual-sostenibilidad-vivienda-yo-construyo (1).pdf
PPT
Sistema de muestrea de datos en operaciones
PPTX
Identificacion de Peligros mediante GTC 45
flujo de caja 2 para la evaluacion de proyectos
EVALUACIÓN 1_REFERENCIAPIR_FASE 1_2024.pdf
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
Diseño y Utiliación del HVAC Aire Acondicionado
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
Expo petroelo 2do ciclo.psssssssssssssptx
La 5ª Edición del Manual de Ingeniería de Sistemas ( SEH5E ) como base d...
MODULO 1 Base Legal Nacional y sus aplicaciones.pdf
manual-sap-gratuito _ para induccion de inicio a SAP
IMPORTANCIA DE CARNE DE COBAYOS- CUYES CRI
SESION 9 seguridad IZAJE DE CARGAS.pdf ingenieria
Infraestructuras en la seguridad vial.pdf
CNE-Tx-ZyD_Comite_2020-12-02-Consolidado-Version-Final.pptx
Instalaciones Electricas.pptx cables electricos
TRABAJOS DE ALTO RIESGO ELEC - LOTO.pptx
EQUIPOS DE PROTECCION PERSONAL - LEY LABORAL.pptx
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
manual-sostenibilidad-vivienda-yo-construyo (1).pdf
Sistema de muestrea de datos en operaciones
Identificacion de Peligros mediante GTC 45

Ordenamiento en C++

  • 2. ORDENAMIENTO Es la operación de arreglar los registros de una tabla en algún orden secuencial de acuerdo a un criterio de ordenamiento. El ordenamiento se efectúa con base en el valor de algún campo en un registro. El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del conjunto ordenado. El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente.
  • 3. 1. ORDENAMIENTO POR SELECCIÓN DESCRIPCIÓN. • Buscas el elemento más pequeño de la lista. • Lo intercambias con el elemento ubicado en la primera posición de la lista. • Buscas el segundo elemento más pequeño de la lista. • Lo intercambias con el elemento que ocupa la segunda posición en la lista. • Repites este proceso hasta que hayas ordenado toda la lista.
  • 4. ANÁLISIS DEL ALGORITMO. • Requerimientos de Memoria: Al igual que el ordenamiento burbuja, este algoritmo sólo necesita una variable adicional para realizar los intercambios. • Tiempo de Ejecución: El ciclo externo se ejecuta n veces para una lista de n elementos. Cada búsqueda requiere comparar todos los elementos no clasificados.
  • 5. Ventajas: • Fácil implementación. • No requiere memoria adicional. • Rendimiento constante: poca diferencia entre el peor y el mejor caso. Desventajas: • Lento. • Realiza numerosas comparaciones.
  • 7. 2. ORDENAMIENTO POR INSERCIÓN DIRECTA DESCRIPCIÓN. El algoritmo de ordenación por el método de inserción directa es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones. Completa la tripleta de los algoritmos de ordenación más básicos y de orden de complejidad cuadrático, junto con Selection Sort y Bubble Sort. Se basa en intentar construir una lista ordenada en el interior del array a ordenar. De estos tres algoritmos es el que mejor resultado da a efectos prácticos. Realiza una cantidad de comparaciones bastante equilibrada con respecto a los intercambios, y tiene un par de características que lo hacen aventajar a los otros dos en la mayor parte de las situaciones. Este algoritmo se basa en hacer comparaciones, así que para que realice su trabajo de ordenación son imprescindibles dos cosas: un array o estructura similar de elementos comparables y un criterio claro de comparación, tal que dados dos elementos nos diga si están en orden o no.
  • 8. • En cada iteración del ciclo externo los elementos 0 a i forman una lista ordenada. ANÁLISIS DEL ALGORITMO. • Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable. • Requerimientos de Memoria: Una variable adicional para realizar los intercambios. • Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta n-1 veces. El ciclo interno se ejecuta como máximo una vez en la primera iteración, 2 veces en la segunda, 3 veces en la tercera, etc. Ventajas: • Fácil implementación. • Requerimientos mínimos de memoria.
  • 9. Desventajas: • Lento. • Realiza numerosas comparaciones. Este también es un algoritmo lento, pero puede ser de utilidad para listas que están ordenadas o semi-ordenadas, porque en ese caso realiza muy pocos desplazamientos.
  • 11. 3. MÉTODO DE ORDENAMIENTO POR INSERCIÓN BINARIA El método de ordenación por 'inserción binaria'' es una mejora del método de inserción directa. Para lograr esta mejora se recurre a una búsqueda binaria en lugar de una búsqueda secuencial para insertar un elemento en la parte izquierda del arreglo, que ya se encuentra ordenado. El resto del procedimiento es similar al de inserción directa, es decir, se repite este mismo procedimiento desde el segundo término hasta el último elemento.
  • 12. ALGORITMO / INSERCION BINARIA (A, N) { para (i=2 hasta N) { aux = A[i]; izq=1; der=i-1; mientras (izq<=der) { m=[parte entera ((izq+der)/2)]; si (aux<A[M]) { der=m-1; } si no { izq=m+1; } } j=i-1; mientras (j>=izq) { A[j+1]=A[j]; j=j-11; } A[izq]=auz; }
  • 13. 4. ORDENAMIENTO POR EL MÉTODO DE SHELL 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 insertar es 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. 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.
  • 14. El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones: 1. El ordenamiento por inserción es eficiente si la entrada está "casi ordenada". 2. El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados. El Shell sort lleva este nombre en honor a su inventor, Donald Shell, que lo publicó en 1959.
  • 17. ORDENAMIENTO QUICK SORT El ordenamiento por partición (Quick Sort) se puede definir en una forma más conveniente como un procedimiento recursivo. Tiene aparentemente la propiedad de trabajar mejor para elementos de entrada desordenados completamente, que para elementos semi- ordenados. Esta situación es precisamente la opuesta al ordenamiento de burbuja. Este tipo de algoritmos se basa en la técnica "divide y vencerás", o sea es más rápido y fácil ordenar dos arreglos o listas de datos pequeños, que un arreglo o lista grande. Normalmente al inicio de la ordenación se escoge un elemento aproximadamente en la mitad del arreglo, así al empezar a ordenar, se debe llegar a que el arreglo este ordenado respecto al punto de división o la mitad del arreglo.
  • 18. Se podrá garantizar que los elementos a la izquierda de la mitad son los menores y los elementos a la derecha son los mayores. Los siguientes pasos son llamados recursivos con el propósito de efectuar la ordenación por partición al arreglo izquierdo y al arreglo derecho, que se obtienen de la primera fase. El tamaño de esos arreglos en promedio se reduce a la mitad. Así se continúa hasta que el tamaño de los arreglos a ordenar es 1, es decir, todos los elementos ya están ordenados. En promedio para todos los elementos de entrada de tamaño n, el método hace O (n logn) comparaciones, el cual es relativamente eficiente.
  • 21. ORDENAMIENTO HEAP SORT El ordenamiento por montículos (Heap sort) es un algoritmo de ordenación no recursivo, no estable, con complejidad computacional O(n log n). Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento (o el mayor, según se haya definido el montículo) de todos los almacenados en él. El significado de heap en ciencia computacional es el de una cola de prioridades (priority queue). Tiene las siguientes características: • Un heap es un arreglo de n posiciones ocupado por los elementos de la cola.(Nota: se utiliza un arreglo que inicia en la posición 1 y no en cero, de tal manera que al implementarla en C se tienen n+1 posiciones en el arreglo.) • Se mapea un árbol binario de tal manera en el arreglo que el nodo en la posición i es el padre de los nodos en las posiciones (2*i) y (2*i+1). • El valor en un nodo es mayor o igual a los valores de sus hijos. Por consiguiente, el nodo padre tiene el mayor valor de todo su subárbol.
  • 22. PROCEDIMIENTO Heap Sort consiste esencialmente en: • Convertir el arreglo en un heap. • Construir un arreglo ordenado de atrás hacia adelante (mayor a menor)repitiendo los siguientes pasos: • Sacar el valor máximo en el heap (el de la posición 1) • Poner ese valor en el arreglo ordenado • Reconstruir el heap con un elemento menos • Utilizar el mismo arreglo para el heap y el arreglo ordenado.
  • 24. Fuente: UNIVERSIDAD CONTINENTAL DE CIENCIAS E INGENIERÍAS http://es.scribd.com/doc/1739233/Ordenamiento-en-C