SlideShare ist ein Scribd-Unternehmen logo
1 von 3
Universidad Tenica de Machala. DANIEL GUAYCHA. 
Utilitarios I 2014 
1 
ALGORITMOS DE ORDENAMIENTO 
DANIEL G UAYCHA 
danielguaycha@gmail.com 
Universidad Técnica de Machala 
 
Abstract--The sorting algorithms Basically, as the 
name itself says sorting algorithms we used to couple 
either order programmers simple large vectors and 
matrices with respect to a value that is either or 
desendente acendente. To make this work was 
focused on programming in c ++ can also say it is a 
very powerful language that was born to an endless 
number of programs. 
I. INTRODUCCIÓN 
INTRODUCCIÓN 
El ordenamiento es una labor común que realizamos 
continuamente. ¿Pero te has preguntado qué es 
ordenar? ¿No? Es que es algo tan corriente en 
nuestras vidas que no nos detenemos a pensar en 
ello. Ordenar es simplemente colocar información 
de una manera especial basándonos en un criterio de 
ordenamiento. 
En la computación el ordenamiento de datos 
también cumple un rol muy importante, ya sea 
como un fin en sí o como parte de otros 
procedimientos más complejos. Se han desarrollado 
muchas técnicas en este ámbito, cada una con 
características específicas, y con ventajas y 
desventajas sobre las demás. Aquí voy a mostrarte 
algunas de las más comunes, tratando de hacerlo de 
una manera sencilla y comprensible. 
Conceptos Preliminares 
Antes de comenzar a ver cada algoritmo vamos a 
ponernos de acuerdo en algunos conceptos, para que 
no haya confusiones: 
Clave: La parte de un registro por la cual se 
ordena la lista. Por ejemplo, una lista de registros 
con campos nombre, dirección y teléfono se puede 
ordenar alfabéticamente de acuerdo al nombre. En 
este caso los campos dirección y teléfono no se 
toman en cuenta en el ordenamiento. 
Criterio de ordenamiento o de comparación: El 
criterio que utilizamos para asignar orden a los 
registros con base en una o más claves. De esta 
manera decidimos si un registro es mayor o menor 
que otro. 
II. ALGORITMOS DE ORDENAMIENTO. 
A. Algoritmo Burbuja 
Bubble Sort recorre el arreglo intercambiando los 
elementos adyacentes que estén desordenados. 
Recorre el arreglo tantas veces hasta que ya no haya 
cambios. Prácticamente lo que hace es tomar el 
elemento mayor y lo coloca en las últimas 
posiciones o tomar el menor y colocarlo en las 
primeras posiciones. 
PSEUDOCÓDIGO 
Algoritmo Burbuja 
Inicio 
Entero X, Z, Arreglo[N] 
X Ss 0 
Mientras(X < N){ 
Z Ss N 
Mientras(Z >= 0) 
{ 
Si(Arreglo[Z] < Arreglo[Z-1]) 
{ 
Intercambio(Arreglo[Z],Arreglo[Z-1]) 
}Z Ss Z – 1} 
X Ss X + 1} 
Fin 
PROGRAMACION C++ 
for (int pasada=0; pasada<n-1 && bandera==1;pasada++) 
{ 
bandera=0; 
for (int j=0; j<n-pasada-1;j++) 
{if (numeros[j]> numeros[j+1]) 
{ bandera=1; 
mantiene=numeros[j]; 
numeros[j]=numeros[j+1]; 
numeros[j+1]=mantiene; 
} 
}
Universidad Tenica de Machala. DANIEL GUAYCHA. 
Utilitarios I 2014 
2 
B. Ordenamiento por inserción 
El ordenamiento por inserción (insertion sort en 
inglés) es una manera muy natural de ordenar para 
un ser humano, y puede usarse fácilmente para 
ordenar un mazo de cartas numeradas en forma 
arbitraria. Requiere O(n²) operaciones para ordenar 
una lista de n elementos. 
Inicialmente se tiene un solo elemento, que 
obviamente es un conjunto ordenado. Después, 
cuando hay k elementos ordenados de menor a 
mayor, se toma el elemento k+1 y se compara con 
todos los elementos ya ordenados, deteniéndose 
cuando se encuentra un elemento menor (todos los 
elementos mayores han sido desplazados una 
posición a la derecha) o cuando ya no se encuentran 
elementos (todos los elementos fueron desplazados y 
este es el más pequeño). En este punto se inserta el 
elemento k+1 debiendo desplazarse los demás 
elementos. 
PROGRAMA EN C++ 
int main() { 
const int n=10; 
int num[n]={90, 2, 8, 5, 1, 9, 70, 3, 91, 4.}; 
int i,j; 
int aux; 
for (int i=1;i<n; i++){ 
j=i; 
aux=num[i]; 
while(j>0 && aux<num[j-1]){ 
num[j]=num[j-1]; 
j--; 
} 
num[j]=aux; 
} 
for(int a=0; a<n; a++){ 
cout<<""<<num[a]<<" "; 
} 
return 0; 
} 
C. Ordenamiento quicksort 
El ordenamiento rápido (quicksort en inglés) es un 
algoritmo creado por el científico británico en 
computación C. A. R. Hoare basado en la técnica 
de divide y vencerás, que permite, en promedio, 
ordenar n elementos en un tiempo proporcional a n 
log n. 
1. Elegir un elemento de la lista de 
elementos a ordenar, al que 
llamaremos pivote. 
2. Resituar los demás elementos de la 
lista a cada lado del pivote, de 
manera que a un lado queden todos 
los menores que él, y al otro los 
mayores. Los elementos iguales al 
pivote pueden ser colocados tanto a 
su derecha como a su izquierda, 
dependiendo de la implementación 
deseada. En este momento, el pivote 
ocupa exactamente el lugar que le 
corresponderá en la lista ordenada. 
3. La lista queda separada en dos 
sublistas, una formada por los 
elementos a la izquierda del pivote, 
y otra por los elementos a su 
derecha. 
4. Repetir este proceso de forma 
recursiva para cada sublista 
mientras éstas contengan más de un 
elemento. Una vez terminado este 
proceso todos los elementos estarán 
ordenados. 
Como se puede suponer, la eficiencia del algoritmo 
depende de la posición en la que termine el pivote 
elegido. 
En el mejor caso, el pivote termina en el centro de 
la lista, dividiéndola en dos sublistas de igual 
tamaño. En este caso, el orden de complejidad del 
algoritmo es O(n·log n). 
En el peor caso, el pivote termina en un extremo de 
la lista. El orden de complejidad del algoritmo es 
entonces de O(n²). El peor caso dependerá de la 
implementación del algoritmo, aunque 
habitualmente ocurre en listas que se encuentran 
ordenadas, o casi ordenadas. Pero principalmente 
depende del pivote, si por ejemplo el algoritmo
Universidad Tenica de Machala. DANIEL GUAYCHA. 
Utilitarios I 2014 
3 
implementado toma como pivote siempre el primer 
elemento del array, y el array que le pasamos está 
ordenado, siempre va a generar a su izquierda un 
array vacío, lo que es ineficiente. 
PROGRAMA EN C++ 
main(){ 
int izq,der,temporal,pivote; 
izq=lim_izq; 
der=lim_der; 
pivote=num[(izq+der)/2]; 
do{ 
while(num[izq]<pivote && 
izq<lim_der)izq++; 
while(pivote<num[der]&& der>lim_izq)der--; 
if(izq<=der){ 
temporal=num[izq]; 
num[izq]=num[der]; 
num[der]=temporal; 
izq++; 
der--; 
} 
}while(izq>=der); 
if(lim_izq<der){qs(num,lim_izq,der);} 
if(lim_der>izq){qs(num,lim_der,izq);} 
} 
CONCLUSIONES 
Los algoritmos de ordenamiento no permiten, como 
su nombre mismo lo dice, ordenar. En este caso nos 
servirán para ordenar vectores o matrices con 
valores asignados 
Aleatoriamente. Nosotros nos centráramos en los 
métodos mas populares analizando la cantidad De 
comparaciones que suceden, el tiempo que demora 
y revisando el codigo, escrito En c++ 
5. REFERENCIAS 
[1] Deitel, H. M., Deitel, P. J., & Octavio, G. P. (2004). 
Cómo programar en C/C y Java. México: Pearson 
Educación. 
[2] Weiss, Mark Allen: "Estructuras de datos y 
algoritmos", Addison-Wesley Iberoamericana, 1995. 
[3] Kernighan, Brian W.; Ritchie, Dennis M.: "El 
lenguaje de programación C'', Prentice-Hall 
Hispanoamericana, 1991. 
[4] JOYANES, L. (2008). Fundamentos de la 
programación. Algoritmos y Estructura de Datos, 4ª 
Edición. Madrid: McGraw-Hill.

Weitere ähnliche Inhalte

Was ist angesagt? (20)

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
 
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIO
 
Quicksort
QuicksortQuicksort
Quicksort
 
Quicksort
QuicksortQuicksort
Quicksort
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Quicksort
QuicksortQuicksort
Quicksort
 
Insercion directa
Insercion directaInsercion directa
Insercion directa
 
Ordenamiento c++
Ordenamiento c++Ordenamiento c++
Ordenamiento c++
 
Métodos de ordenamiento
Métodos de ordenamiento Métodos de ordenamiento
Métodos de ordenamiento
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Ordenamiento por insercion
Ordenamiento por insercionOrdenamiento por insercion
Ordenamiento por insercion
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Presentación inserción directa y binaria
Presentación inserción directa y binariaPresentación inserción directa y binaria
Presentación inserción directa y binaria
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Ordenamiento ppt
Ordenamiento pptOrdenamiento ppt
Ordenamiento ppt
 
Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)Método de Ordenamiento Directa (Burbuja)
Método de Ordenamiento Directa (Burbuja)
 
Algoritmo de quicksort
Algoritmo de quicksortAlgoritmo de quicksort
Algoritmo de quicksort
 

Ähnlich wie Algoritmos de ordenamiento

Ähnlich wie Algoritmos de ordenamiento (20)

Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
Algebra morelys lugo2
Algebra morelys lugo2Algebra morelys lugo2
Algebra morelys lugo2
 
Arreglos enitmar
Arreglos enitmarArreglos enitmar
Arreglos enitmar
 
1_Metodos.doc
1_Metodos.doc1_Metodos.doc
1_Metodos.doc
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Presentacion
PresentacionPresentacion
Presentacion
 

Kürzlich hochgeladen

Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesCarlosMeraz16
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfdanielJAlejosC
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesgovovo2388
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfannavarrom
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMONICADELROCIOMUNZON1
 
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfTEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfXimenaFallaLecca1
 

Kürzlich hochgeladen (20)

Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfTEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
 

Algoritmos de ordenamiento

  • 1. Universidad Tenica de Machala. DANIEL GUAYCHA. Utilitarios I 2014 1 ALGORITMOS DE ORDENAMIENTO DANIEL G UAYCHA danielguaycha@gmail.com Universidad Técnica de Machala  Abstract--The sorting algorithms Basically, as the name itself says sorting algorithms we used to couple either order programmers simple large vectors and matrices with respect to a value that is either or desendente acendente. To make this work was focused on programming in c ++ can also say it is a very powerful language that was born to an endless number of programs. I. INTRODUCCIÓN INTRODUCCIÓN El ordenamiento es una labor común que realizamos continuamente. ¿Pero te has preguntado qué es ordenar? ¿No? Es que es algo tan corriente en nuestras vidas que no nos detenemos a pensar en ello. Ordenar es simplemente colocar información de una manera especial basándonos en un criterio de ordenamiento. En la computación el ordenamiento de datos también cumple un rol muy importante, ya sea como un fin en sí o como parte de otros procedimientos más complejos. Se han desarrollado muchas técnicas en este ámbito, cada una con características específicas, y con ventajas y desventajas sobre las demás. Aquí voy a mostrarte algunas de las más comunes, tratando de hacerlo de una manera sencilla y comprensible. Conceptos Preliminares Antes de comenzar a ver cada algoritmo vamos a ponernos de acuerdo en algunos conceptos, para que no haya confusiones: Clave: La parte de un registro por la cual se ordena la lista. Por ejemplo, una lista de registros con campos nombre, dirección y teléfono se puede ordenar alfabéticamente de acuerdo al nombre. En este caso los campos dirección y teléfono no se toman en cuenta en el ordenamiento. Criterio de ordenamiento o de comparación: El criterio que utilizamos para asignar orden a los registros con base en una o más claves. De esta manera decidimos si un registro es mayor o menor que otro. II. ALGORITMOS DE ORDENAMIENTO. A. Algoritmo Burbuja Bubble Sort recorre el arreglo intercambiando los elementos adyacentes que estén desordenados. Recorre el arreglo tantas veces hasta que ya no haya cambios. Prácticamente lo que hace es tomar el elemento mayor y lo coloca en las últimas posiciones o tomar el menor y colocarlo en las primeras posiciones. PSEUDOCÓDIGO Algoritmo Burbuja Inicio Entero X, Z, Arreglo[N] X Ss 0 Mientras(X < N){ Z Ss N Mientras(Z >= 0) { Si(Arreglo[Z] < Arreglo[Z-1]) { Intercambio(Arreglo[Z],Arreglo[Z-1]) }Z Ss Z – 1} X Ss X + 1} Fin PROGRAMACION C++ for (int pasada=0; pasada<n-1 && bandera==1;pasada++) { bandera=0; for (int j=0; j<n-pasada-1;j++) {if (numeros[j]> numeros[j+1]) { bandera=1; mantiene=numeros[j]; numeros[j]=numeros[j+1]; numeros[j+1]=mantiene; } }
  • 2. Universidad Tenica de Machala. DANIEL GUAYCHA. Utilitarios I 2014 2 B. Ordenamiento por inserción El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Requiere O(n²) operaciones para ordenar una lista de n elementos. Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posición a la derecha) o cuando ya no se encuentran elementos (todos los elementos fueron desplazados y este es el más pequeño). En este punto se inserta el elemento k+1 debiendo desplazarse los demás elementos. PROGRAMA EN C++ int main() { const int n=10; int num[n]={90, 2, 8, 5, 1, 9, 70, 3, 91, 4.}; int i,j; int aux; for (int i=1;i<n; i++){ j=i; aux=num[i]; while(j>0 && aux<num[j-1]){ num[j]=num[j-1]; j--; } num[j]=aux; } for(int a=0; a<n; a++){ cout<<""<<num[a]<<" "; } return 0; } C. Ordenamiento quicksort El ordenamiento rápido (quicksort en inglés) es un algoritmo creado por el científico británico en computación C. A. R. Hoare basado en la técnica de divide y vencerás, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n. 1. Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote. 2. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada. 3. La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha. 4. Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados. Como se puede suponer, la eficiencia del algoritmo depende de la posición en la que termine el pivote elegido. En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n). En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso dependerá de la implementación del algoritmo, aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo
  • 3. Universidad Tenica de Machala. DANIEL GUAYCHA. Utilitarios I 2014 3 implementado toma como pivote siempre el primer elemento del array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente. PROGRAMA EN C++ main(){ int izq,der,temporal,pivote; izq=lim_izq; der=lim_der; pivote=num[(izq+der)/2]; do{ while(num[izq]<pivote && izq<lim_der)izq++; while(pivote<num[der]&& der>lim_izq)der--; if(izq<=der){ temporal=num[izq]; num[izq]=num[der]; num[der]=temporal; izq++; der--; } }while(izq>=der); if(lim_izq<der){qs(num,lim_izq,der);} if(lim_der>izq){qs(num,lim_der,izq);} } CONCLUSIONES Los algoritmos de ordenamiento no permiten, como su nombre mismo lo dice, ordenar. En este caso nos servirán para ordenar vectores o matrices con valores asignados Aleatoriamente. Nosotros nos centráramos en los métodos mas populares analizando la cantidad De comparaciones que suceden, el tiempo que demora y revisando el codigo, escrito En c++ 5. REFERENCIAS [1] Deitel, H. M., Deitel, P. J., & Octavio, G. P. (2004). Cómo programar en C/C y Java. México: Pearson Educación. [2] Weiss, Mark Allen: "Estructuras de datos y algoritmos", Addison-Wesley Iberoamericana, 1995. [3] Kernighan, Brian W.; Ritchie, Dennis M.: "El lenguaje de programación C'', Prentice-Hall Hispanoamericana, 1991. [4] JOYANES, L. (2008). Fundamentos de la programación. Algoritmos y Estructura de Datos, 4ª Edición. Madrid: McGraw-Hill.