SlideShare une entreprise Scribd logo
1  sur  29
UNIVERSIDAD DE PANAMÁ
CENTRO REGIONAL UNIVERSITARIO DE COCLÉ
FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN
LIC. EN INGENIERÍA EN SISTEMAS INFORMÁTICOS
ORDENACIÓN Y BÚSQUEDA
ASIGNATURA:
PROGRAMACIÓN II (INF212)
DOCENTE:
LUSDIELKA G. HERNÁNDEZ
ESTUDIANTE:
IRVING MORÁN
JOSÉ GUTIÉRREZ
LUIS FIGUEROA
ALBIS CORONADO
2020
Objetivos
Una vez que se haya leído y estudiado este capítulo, usted podrá:
• Conocer los algoritmos basados en el intercambio de
elementos.
• Conocer el algoritmo de ordenación por inserción.
• Conocer el algoritmo de selección.
• Distinguir entre los algoritmos de ordenación basados en el
intercambio
y en la inserción.
• Saber la eficiencia de los métodos básicos de ordenación.
• Conocer los métodos más eficientes de ordenación.
• Aplicar métodos mas eficientes de ordenación de arrays.
• Ordenar vectores de objetos.
• Diferenciar entre búsqueda secuencial y búsqueda binaria.
Introducción
Muchas actividades humanas requieren que diferentes colecciones de elementos
utilizados se pongan en un orden específico. Las oficinas de correo y las empresas de
mensajería ordenan el correo y los paquetes por códigos postales con el objeto de
conseguir una entrega eficiente; las facturas telefónicas se ordenan por la fecha de las
llamadas; los anuarios o listines telefónicos se ordenan por orden alfabético de apellidos
con el fin último de encontrar fácilmente el número de teléfono deseado; los estudiantes
de una clase en la universidad se ordenan por sus apellidos o por los números de
expediente.
Por estas circunstancias una de las tareas que realizan más frecuentemente las
computadoras en el procesamiento de datos es la ordenación.
El estudio de diferentes métodos de ordenación es una tarea intrínsecamente interesante
desde un punto de vista teórico y, naturalmente, práctico. Este capítulo estudia los
algoritmos y las técnicas de ordenación más usuales y su implementación en Java;
también la manera de ordenar objetos con la funcionalidad que proporcionan las clases
en Java. De igual modo, se estudiará el análisis de los diferentes métodos de ordenación
con el objetivo de conseguir la máxima eficiencia en su uso real.
En el capítulo se analizarán los métodos básicos y los más avanzados empleados en
programas profesionales.
Conceptos
preliminares
Clave: es una pieza de información que controla la
operación de un algoritmo de criptografía.
Habitualmente, esta información es una secuencia de
números o letras mediante la cual, en criptografía, se
especifica la transformación del texto plano en texto
cifrado, o viceversa.
Criterio de ordenamiento: el criterio que utilizamos para
asignar valores a los registros con base en una o más
claves.
Registro: es un algoritmo que pone elementos de
una lista o un vector . Las relaciones de orden más
usadas son el orden numérico y el orden lexicográfico.
Ordenamiento de datos
¿Que es?
Es el procedimiento en el cual se
agrupan los registros en orden
definido, con el fin de facilitar la
búsqueda de datos ordenados en
secuencia. el cual puede ser
numérico, alfabético o incluso
alfanumérico, ascendente o
descendente, el cual puede ser
numérico, alfabético o incluso
alfanumérico, ascendente o
descendente.
¿Cuando se sabe cuando un
algoritmo es eficiente o mejor?
Un algoritmo es considerado eficiente si su consumo de recursos está en la media o por
debajo de los niveles aceptables. Hablando a grandes rasgos, 'aceptable' significa: que el
algoritmo corre en un tiempo razonable en una computadora dada
Grado de orden que tendrá el
algoritmo a manejar
Preciso: implica el orden
de realización de cada
uno de los pasos
Definido: si se sigue dos
veces, se obtiene el
mismo resultado.
Finito: Tiene un numero
determinado de pasos,
implica que tiene un fin.
Cantidad de datos o pasos a
manipular
1
Análisis del
problema Conducen al diseño detallado por medio
un código escrito en forma de un algoritmo
2
Diseño de
algoritmo
3 Codificación
Se implementa el algoritmo en un código escrito en
un lenguaje de programación. Refleja las ideas
desarrolladas en las etapas de análisis y diseño
4
Compilación y
ejecución
Traduce el programa fuente a programa en código
de maquina y lo ejecuta.
5 Verificación
Busca errores en las etapas anteriores y los elimina.
6 Depuración
7 Documentación
Son comentarios, etiquetas de texto, que facilitan la
comprensión del programa
Tipos de datos a ordenar
Se desea ordenar datos Algorítmicos los cuales
Utiliza un algoritmo y puede ser implementado en
una computadora Y datos Heurísticos: los Se
apoyan en el resultado obtenido en un análisis de
alternativas de experiencias anteriores similares.
Concepto de ordenación
Algoritmo de ordenación básicos
En computación y matemáticas un
algoritmo de ordenamiento es un
algoritmo que pone elementos de
una lista o un vector en una
secuencia dada por una relación
de orden
Ordenación por
intercambio
El algoritmo del
intercambio aunque es el
más sencillo de
implementar es uno de los
mas pobres en rendimiento.
Ordenación por
selección
Consiste en encontrar
el menor de todos los
elementos del vector e
intercambiarlo con el
que está en la primera
posición.
Ordenación por inserción
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 operaciones para ordenar
una lista de elementos.
Ordenación por burbujas
(bubblesort)
Es un sencillo algoritmo
de ordenamiento. Funciona
revisando cada elemento de
la lista que va a ser
ordenada con el siguiente,
intercambiándolos de
posición si están en
el orden equivocado.
Ordenación Shell
El método de ordenamiento
Shell consiste en dividir el arreglo (o
la lista de elementos) en intervalos (o
bloques) de varios elementos para
organizarlos después por medio
del ordenamiento de inserción
directa
DATO CURIOSO: su nombre proviene del
creador Donald Shell.
Ordenación rápida (quicksort)
Es un algoritmo 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.
Ordenación Binsort
Es un algoritmo de
ordenamiento que
distribuye todos los
elementos a ordenar entre
un número finito de
casilleros.
Ordenación Radixsort
Radix es un algoritmo de
ordenamiento que ordena
enteros procesando sus
dígitos de forma
individual
Búsqueda de Datos
Video
Algoritmo de búsqueda
Un algoritmo de búsqueda es un conjunto de
instrucciones que están diseñadas para
localizar un elemento con ciertas propiedades
dentro de una estructura de datos; por
ejemplo, ubicar el registro correspondiente a
cierta persona en una base de datos, o el
mejor movimiento en una partida de ajedrez.
La variante más simple del problema es la
búsqueda de un número en un vector.
Pseudocódigo del algoritmo
EjemploDatos de entrada:
vec: vector en el que se desea buscar el dato
tam: tamaño del vector.
Los subíndices válidos van desde 0 hasta tam-1 inclusive.
Puede representarse así: vec[0...tam) o vec[0...tam-1]. dato:
elemento que se quiere buscar.
Datos de entrada:
vec: vector en el que se desea buscar el dato
tam: tamaño del vector. Los subíndices válidos van desde 0 hasta
tam-1 inclusive. Puede representarse así: vec[0...tam) o
vec[0...tam-1].
dato: elemento que se quiere buscar.
Variables
pos: posición actual en el vector
pos = 0
while pos < tam:
if vec[pos] == dato:
Retorne verdadero y/o pos,
else:
pos = pos + 1
Fin (while)
Retorne falso,
Int busquedaSimple(int vector[n],int n, int dato){
Int i;
For(i=0; i<m; i++)}
If(dato==vector[i]){
Return i;
}
}
Return -1;
}
Búsqueda binaria
Se utiliza cuando el vector en el que queremos
determinar la existencia de un elemento está
previamente ordenado. Este algoritmo reduce el
tiempo de búsqueda considerablemente, ya que
disminuye exponencialmente el número de iteraciones
necesarias.
Para implementar este algoritmo se compara el
elemento a buscar con un elemento cualquiera del
vector (normalmente el elemento central): si el valor
de éste es mayor que el del elemento buscado se repite
el procedimiento en la parte del vector que va desde el
inicio de éste hasta el elemento tomado, en caso
contrario se toma la parte del vector que va desde el
elemento tomado hasta el final.
Ejemplo
Datos de entrada:
vec: vector en el que se desea buscar el dato
tam: tamaño del vector. Los subíndices válidos van desde 0 hasta tam-1 inclusive.
dato: elemento que se quiere buscar.
Variables
centro: subíndice central del intervalo
inf: límite inferior del intervalo
sup: límite superior del intervalo
inf = 0
sup = tam-1
Mientras inf <= sup:
centro = ((sup - inf) / 2) + inf // División entera: se trunca la fracción
Si vec[centro] == dato devolver verdadero y/o pos, de lo contrario:
Si dato < vec[centro] entonces:
sup = centro - 1
En caso contrario:
inf = centro + 1
Fin (Mientras)
Devolver Falso
Conclusión
A medida que fuimos desarrollando el trabajo fuimos aprendiendo más sobre este tema que por los vistos
tienes una amplitud en cuanto su uso primero empezando por la definición de preliminares dirigido a la
programación las diferentes partes que lo compones en este trabajo verán de forma más profunda este término
al igual que las claves, criterios de ordenación y registros como el segundo puntos tenemos ordenamiento de
datos el tercer punto como se sabe cuál es el mejor algoritmo. vemos las incógnitas que se forman con esta
pregunta el cuanto punto es el concepto de ordenación el cual tienes una gran variedad de sub temas en os
que destacan la ordenación por intercambio, por selección y por inserción la ordenación de burbuja la
ordenación de Shell la cual lleva ese nombre por su creador Donald Shell y el quick sort.
El cual es un poco difícil, pero gracias a su alta eficiencia esta está entre los mejores. Vimos las desventajas
de algunas ordenaciones para profundizar más en ellas los pasos que se siguen para desarrollar una
algoritmos de quick sort por ultimo en el curatos puntos las ordenación de Bin sort y Radix sort viento el
punto cinco búsqueda de datos y estos se divide en dos sub temas búsqueda secuencial que también se conoce
como búsqueda lineal y búsqueda binaria.
se conoció cada uno de los tipos de métodos de búsqueda ya que al momento de hacer un
programa extenso podríamos utilizar algunos de estos métodos y así encontrar la información más
rápida y no perder tanto tiempo.
Bibliografí
a
blogspot. (16 de 6 de 2016). blogspot. Obtenido de blogspot: http://ordendata.blogspot.com/
López. (s.f.). LAPA. Obtenido de
http://132.248.48.64/repositorio/moodle/pluginfile.php/1472/mod_resource/content/1/contenido/index.html#:~:text=El%20m%C3%A9todo
%20de%20ordenamiento%20Shell,del%20ordenamiento%20de%20inserci%C3%B3n%20directa.
lwh.free. (s.f.). Obtenido de lwh.free:
http://lwh.free.fr/pages/algo/tri/tri_rapide_es.html#:~:text=El%20algoritmo%20fundamental%20es%20el,y%20al%20otro%20los%20mayor
es.
Monografias. (15 de 5 de 2015). monografias. Obtenido de monografias:
https://www.monografias.com/trabajos15/algoritmos/algoritmos.shtml#DISE%C3%91O
quicksort. (s.f.). quicksort. Obtenido de http://quicksort.yolasite.com/antecedentes.php
rmurillo95. (s.f.). www.monografias.com. Obtenido de https://www.monografias.com/trabajos/algordenam/algordenam.shtml
Sarango, J. (s.f.). scribd. Obtenido de https://es.scribd.com/document/445950137/binsort-y-radixsort
Wandy, j. (s.f.). techlandia. Obtenido de techlandia: https://techlandia.com/ventajas-desventajas-algoritmos-ordenamiento-info_181515/
wiipedia. (s.f.). wikipedia . Obtenido de
https://es.wikipedia.org/wiki/Ordenamiento_por_casilleros#:~:text=El%20ordenamiento%20por%20casilleros%20(bucket,que%20cumplan
%20unas%20determinadas%20condiciones.
wikipedia. (s.f.). Obtenido de wikipedia: https://es.wikipedia.org/wiki/Ordenamiento_Radix
wikipedia. (21 de junio de 2020). Obtenido de https://es.wikipedia.org/wiki/Ordenamiento_por_selecci%C3%B3n
Willams, Jr., Louis F. (1975). A modification to the half-interval search (binary search) method. Proceedings of the 14th ACM Southeast
Conference. pp. 95-101. doi:10.1145/503561.503582.
Knuth, 1998, §6.2.1 ("Searching an ordered table"), subsection "Binary search".
Cormen et al., 2009, p. 39.
Weisstein, Eric W. «Binary Search». En Weisstein, Eric W, ed. MathWorld (en inglés). Wolfram Research.
Flores, Ivan; Madpis, George (1971). «Average binary search length for dense ordered lists». CACM 14 (9): 602-603.
doi:10.1145/362663.362752.
a b Bottenbruch, Hermann (1962).

Contenu connexe

Tendances

Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
Boris Salleg
 
Derivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponencialesDerivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponenciales
kevin lopez
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
rezzaca
 

Tendances (20)

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 variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
 
Diapositivas de estructuras algebraicas
Diapositivas de estructuras algebraicasDiapositivas de estructuras algebraicas
Diapositivas de estructuras algebraicas
 
Estructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeIntEstructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeInt
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionales
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Derivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponencialesDerivadas logaritmicas y trigonometricas o exponenciales
Derivadas logaritmicas y trigonometricas o exponenciales
 
Algoritmos secuenciales resueldos
Algoritmos  secuenciales resueldosAlgoritmos  secuenciales resueldos
Algoritmos secuenciales resueldos
 
Resolucion De Problemas Con Computadora
Resolucion De Problemas Con ComputadoraResolucion De Problemas Con Computadora
Resolucion De Problemas Con Computadora
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Paradigma de poo
Paradigma de pooParadigma de poo
Paradigma de poo
 
Metodo burbuja
Metodo burbujaMetodo burbuja
Metodo burbuja
 
Tema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosTema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datos
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA
 
Ejercicios resueltos con Python
Ejercicios resueltos con PythonEjercicios resueltos con Python
Ejercicios resueltos con Python
 

Similaire à Ordenacion y busqueda

Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
VivianaG
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
sirekarol
 
Manejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, BeneficiosManejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, Beneficios
ejosue23
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
mishuhot
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
Daniel Guaycha
 

Similaire à Ordenacion y busqueda (20)

Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
Bus99
Bus99Bus99
Bus99
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Recursividad, Ordenacion y Busqueda
Recursividad, Ordenacion y BusquedaRecursividad, Ordenacion y Busqueda
Recursividad, Ordenacion y Busqueda
 
Manejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, BeneficiosManejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, Beneficios
 
ALP Unidad 3: Tipos de datos estructurados y punteros
ALP Unidad 3: Tipos de datos estructurados y punterosALP Unidad 3: Tipos de datos estructurados y punteros
ALP Unidad 3: Tipos de datos estructurados y punteros
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Algoritmos II_2020.pdf
Algoritmos II_2020.pdfAlgoritmos II_2020.pdf
Algoritmos II_2020.pdf
 
Vectores - Informática
Vectores - InformáticaVectores - Informática
Vectores - Informática
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidor
 
Informe tecnico unidad 6
Informe tecnico unidad 6Informe tecnico unidad 6
Informe tecnico unidad 6
 
2rias5me
2rias5me2rias5me
2rias5me
 
Algoritsmos unefa
Algoritsmos unefaAlgoritsmos unefa
Algoritsmos unefa
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Informe tecnico u 6-victor uex
Informe tecnico u 6-victor uexInforme tecnico u 6-victor uex
Informe tecnico u 6-victor uex
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 

Dernier

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Dernier (12)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Ordenacion y busqueda

  • 1. UNIVERSIDAD DE PANAMÁ CENTRO REGIONAL UNIVERSITARIO DE COCLÉ FACULTAD DE INFORMÁTICA, ELECTRÓNICA Y COMUNICACIÓN LIC. EN INGENIERÍA EN SISTEMAS INFORMÁTICOS ORDENACIÓN Y BÚSQUEDA ASIGNATURA: PROGRAMACIÓN II (INF212) DOCENTE: LUSDIELKA G. HERNÁNDEZ ESTUDIANTE: IRVING MORÁN JOSÉ GUTIÉRREZ LUIS FIGUEROA ALBIS CORONADO 2020
  • 2. Objetivos Una vez que se haya leído y estudiado este capítulo, usted podrá: • Conocer los algoritmos basados en el intercambio de elementos. • Conocer el algoritmo de ordenación por inserción. • Conocer el algoritmo de selección. • Distinguir entre los algoritmos de ordenación basados en el intercambio y en la inserción. • Saber la eficiencia de los métodos básicos de ordenación. • Conocer los métodos más eficientes de ordenación. • Aplicar métodos mas eficientes de ordenación de arrays. • Ordenar vectores de objetos. • Diferenciar entre búsqueda secuencial y búsqueda binaria.
  • 3. Introducción Muchas actividades humanas requieren que diferentes colecciones de elementos utilizados se pongan en un orden específico. Las oficinas de correo y las empresas de mensajería ordenan el correo y los paquetes por códigos postales con el objeto de conseguir una entrega eficiente; las facturas telefónicas se ordenan por la fecha de las llamadas; los anuarios o listines telefónicos se ordenan por orden alfabético de apellidos con el fin último de encontrar fácilmente el número de teléfono deseado; los estudiantes de una clase en la universidad se ordenan por sus apellidos o por los números de expediente. Por estas circunstancias una de las tareas que realizan más frecuentemente las computadoras en el procesamiento de datos es la ordenación. El estudio de diferentes métodos de ordenación es una tarea intrínsecamente interesante desde un punto de vista teórico y, naturalmente, práctico. Este capítulo estudia los algoritmos y las técnicas de ordenación más usuales y su implementación en Java; también la manera de ordenar objetos con la funcionalidad que proporcionan las clases en Java. De igual modo, se estudiará el análisis de los diferentes métodos de ordenación con el objetivo de conseguir la máxima eficiencia en su uso real. En el capítulo se analizarán los métodos básicos y los más avanzados empleados en programas profesionales.
  • 4. Conceptos preliminares Clave: es una pieza de información que controla la operación de un algoritmo de criptografía. Habitualmente, esta información es una secuencia de números o letras mediante la cual, en criptografía, se especifica la transformación del texto plano en texto cifrado, o viceversa. Criterio de ordenamiento: el criterio que utilizamos para asignar valores a los registros con base en una o más claves. Registro: es un algoritmo que pone elementos de una lista o un vector . Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico.
  • 6. ¿Que es? Es el procedimiento en el cual se agrupan los registros en orden definido, con el fin de facilitar la búsqueda de datos ordenados en secuencia. el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente, el cual puede ser numérico, alfabético o incluso alfanumérico, ascendente o descendente.
  • 7. ¿Cuando se sabe cuando un algoritmo es eficiente o mejor? Un algoritmo es considerado eficiente si su consumo de recursos está en la media o por debajo de los niveles aceptables. Hablando a grandes rasgos, 'aceptable' significa: que el algoritmo corre en un tiempo razonable en una computadora dada
  • 8. Grado de orden que tendrá el algoritmo a manejar Preciso: implica el orden de realización de cada uno de los pasos Definido: si se sigue dos veces, se obtiene el mismo resultado. Finito: Tiene un numero determinado de pasos, implica que tiene un fin.
  • 9. Cantidad de datos o pasos a manipular 1 Análisis del problema Conducen al diseño detallado por medio un código escrito en forma de un algoritmo 2 Diseño de algoritmo 3 Codificación Se implementa el algoritmo en un código escrito en un lenguaje de programación. Refleja las ideas desarrolladas en las etapas de análisis y diseño 4 Compilación y ejecución Traduce el programa fuente a programa en código de maquina y lo ejecuta. 5 Verificación Busca errores en las etapas anteriores y los elimina. 6 Depuración 7 Documentación Son comentarios, etiquetas de texto, que facilitan la comprensión del programa
  • 10. Tipos de datos a ordenar Se desea ordenar datos Algorítmicos los cuales Utiliza un algoritmo y puede ser implementado en una computadora Y datos Heurísticos: los Se apoyan en el resultado obtenido en un análisis de alternativas de experiencias anteriores similares.
  • 12. Algoritmo de ordenación básicos En computación y matemáticas un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden
  • 13. Ordenación por intercambio El algoritmo del intercambio aunque es el más sencillo de implementar es uno de los mas pobres en rendimiento.
  • 14. Ordenación por selección Consiste en encontrar el menor de todos los elementos del vector e intercambiarlo con el que está en la primera posición.
  • 15. Ordenación por inserción 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 operaciones para ordenar una lista de elementos.
  • 16. Ordenación por burbujas (bubblesort) Es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado.
  • 17. Ordenación Shell El método de ordenamiento Shell consiste en dividir el arreglo (o la lista de elementos) en intervalos (o bloques) de varios elementos para organizarlos después por medio del ordenamiento de inserción directa DATO CURIOSO: su nombre proviene del creador Donald Shell.
  • 18. Ordenación rápida (quicksort) Es un algoritmo 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.
  • 19.
  • 20. Ordenación Binsort Es un algoritmo de ordenamiento que distribuye todos los elementos a ordenar entre un número finito de casilleros.
  • 21. Ordenación Radixsort Radix es un algoritmo de ordenamiento que ordena enteros procesando sus dígitos de forma individual
  • 23. Video
  • 24. Algoritmo de búsqueda Un algoritmo de búsqueda es un conjunto de instrucciones que están diseñadas para localizar un elemento con ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez. La variante más simple del problema es la búsqueda de un número en un vector.
  • 25. Pseudocódigo del algoritmo EjemploDatos de entrada: vec: vector en el que se desea buscar el dato tam: tamaño del vector. Los subíndices válidos van desde 0 hasta tam-1 inclusive. Puede representarse así: vec[0...tam) o vec[0...tam-1]. dato: elemento que se quiere buscar. Datos de entrada: vec: vector en el que se desea buscar el dato tam: tamaño del vector. Los subíndices válidos van desde 0 hasta tam-1 inclusive. Puede representarse así: vec[0...tam) o vec[0...tam-1]. dato: elemento que se quiere buscar. Variables pos: posición actual en el vector pos = 0 while pos < tam: if vec[pos] == dato: Retorne verdadero y/o pos, else: pos = pos + 1 Fin (while) Retorne falso, Int busquedaSimple(int vector[n],int n, int dato){ Int i; For(i=0; i<m; i++)} If(dato==vector[i]){ Return i; } } Return -1; }
  • 26. Búsqueda binaria Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias. Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del vector (normalmente el elemento central): si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del vector que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del vector que va desde el elemento tomado hasta el final.
  • 27. Ejemplo Datos de entrada: vec: vector en el que se desea buscar el dato tam: tamaño del vector. Los subíndices válidos van desde 0 hasta tam-1 inclusive. dato: elemento que se quiere buscar. Variables centro: subíndice central del intervalo inf: límite inferior del intervalo sup: límite superior del intervalo inf = 0 sup = tam-1 Mientras inf <= sup: centro = ((sup - inf) / 2) + inf // División entera: se trunca la fracción Si vec[centro] == dato devolver verdadero y/o pos, de lo contrario: Si dato < vec[centro] entonces: sup = centro - 1 En caso contrario: inf = centro + 1 Fin (Mientras) Devolver Falso
  • 28. Conclusión A medida que fuimos desarrollando el trabajo fuimos aprendiendo más sobre este tema que por los vistos tienes una amplitud en cuanto su uso primero empezando por la definición de preliminares dirigido a la programación las diferentes partes que lo compones en este trabajo verán de forma más profunda este término al igual que las claves, criterios de ordenación y registros como el segundo puntos tenemos ordenamiento de datos el tercer punto como se sabe cuál es el mejor algoritmo. vemos las incógnitas que se forman con esta pregunta el cuanto punto es el concepto de ordenación el cual tienes una gran variedad de sub temas en os que destacan la ordenación por intercambio, por selección y por inserción la ordenación de burbuja la ordenación de Shell la cual lleva ese nombre por su creador Donald Shell y el quick sort. El cual es un poco difícil, pero gracias a su alta eficiencia esta está entre los mejores. Vimos las desventajas de algunas ordenaciones para profundizar más en ellas los pasos que se siguen para desarrollar una algoritmos de quick sort por ultimo en el curatos puntos las ordenación de Bin sort y Radix sort viento el punto cinco búsqueda de datos y estos se divide en dos sub temas búsqueda secuencial que también se conoce como búsqueda lineal y búsqueda binaria. se conoció cada uno de los tipos de métodos de búsqueda ya que al momento de hacer un programa extenso podríamos utilizar algunos de estos métodos y así encontrar la información más rápida y no perder tanto tiempo.
  • 29. Bibliografí a blogspot. (16 de 6 de 2016). blogspot. Obtenido de blogspot: http://ordendata.blogspot.com/ López. (s.f.). LAPA. Obtenido de http://132.248.48.64/repositorio/moodle/pluginfile.php/1472/mod_resource/content/1/contenido/index.html#:~:text=El%20m%C3%A9todo %20de%20ordenamiento%20Shell,del%20ordenamiento%20de%20inserci%C3%B3n%20directa. lwh.free. (s.f.). Obtenido de lwh.free: http://lwh.free.fr/pages/algo/tri/tri_rapide_es.html#:~:text=El%20algoritmo%20fundamental%20es%20el,y%20al%20otro%20los%20mayor es. Monografias. (15 de 5 de 2015). monografias. Obtenido de monografias: https://www.monografias.com/trabajos15/algoritmos/algoritmos.shtml#DISE%C3%91O quicksort. (s.f.). quicksort. Obtenido de http://quicksort.yolasite.com/antecedentes.php rmurillo95. (s.f.). www.monografias.com. Obtenido de https://www.monografias.com/trabajos/algordenam/algordenam.shtml Sarango, J. (s.f.). scribd. Obtenido de https://es.scribd.com/document/445950137/binsort-y-radixsort Wandy, j. (s.f.). techlandia. Obtenido de techlandia: https://techlandia.com/ventajas-desventajas-algoritmos-ordenamiento-info_181515/ wiipedia. (s.f.). wikipedia . Obtenido de https://es.wikipedia.org/wiki/Ordenamiento_por_casilleros#:~:text=El%20ordenamiento%20por%20casilleros%20(bucket,que%20cumplan %20unas%20determinadas%20condiciones. wikipedia. (s.f.). Obtenido de wikipedia: https://es.wikipedia.org/wiki/Ordenamiento_Radix wikipedia. (21 de junio de 2020). Obtenido de https://es.wikipedia.org/wiki/Ordenamiento_por_selecci%C3%B3n Willams, Jr., Louis F. (1975). A modification to the half-interval search (binary search) method. Proceedings of the 14th ACM Southeast Conference. pp. 95-101. doi:10.1145/503561.503582. Knuth, 1998, §6.2.1 ("Searching an ordered table"), subsection "Binary search". Cormen et al., 2009, p. 39. Weisstein, Eric W. «Binary Search». En Weisstein, Eric W, ed. MathWorld (en inglés). Wolfram Research. Flores, Ivan; Madpis, George (1971). «Average binary search length for dense ordered lists». CACM 14 (9): 602-603. doi:10.1145/362663.362752. a b Bottenbruch, Hermann (1962).