SlideShare une entreprise Scribd logo
1  sur  40
Introducción a la
Programación.
Tema: Búsqueda, ordenación y
mezcla de arreglos
Unidad II: Elementos de Programación .
2.8 Definición de arreglos unidimensionales y
bidimensionales.
2.9 Búsqueda, ordenación y
mezcla de arreglos.
2.10 Estructura de datos.
2.11 Programación modular.
2.12 Definición de punteros.
2.13 Estructuras dinámicas.
Unidad II: Elementos de Programación
Bibliografía
Algoritmos
computacionales.
Introduccción al análisis
y diseño. Editorial
Addison Wesley. Tercera
edición. 2002. Baase
Sara, Van Gelder Allen.
Capítulo 4. Página 149 –
151.
Bibliografía
Cómo programar
C/C++ y Java
Introduccción al análisis
y diseño. Editorial
Pearson Prentice Hall
Cuarta edición. 2004.
Deitel. Deitel. Capítulo 6.
Página 197.
Bibliografía
Curso de programación C/C++
Fco. Javier Ceballos Sierra.
Profesor titular de la Escuela Universitaria
Politécnica Universidad de Alcalá de
Henares.
Editorial RA-MA.
Páginas 492, 493, 495-498, 502, 503.
Bibliografía
Fundamentos de Programación con el
Lenguaje de Programación C++
Vicente Benjumea y Manuel Roldán
31 de mayo de 2017
UNIVERSIDAD DE MÁLAGA. Dpto. Lenguajes
y CC. Computación
E.T.S.I. Informática
Páginas: 85-88, 90,
Búsqueda, ordenación y mezcla de arreglos.
Los algoritmos para ordenar sirven para
acomodar en orden los elementos de un
conjunto. Ésto fue uno de los primeros
problemas que se estudiaron intensamente en
las ciencias de la computación. Muchas de las
aplicaciones más conocidas del paradigma de
diseño de algoritmos Divide y Vencerás son
algoritmos de ordenamiento. Durante los años
sesenta, cuando el procesamiento comercial de
datos se automatizó en gran escala, el
programa de ordenamiento era el que se
ejecutaba con mayor frecuencia en muchas
instalaciones de cómputo.
Búsqueda, ordenación y mezcla de arreglos.
Hay varias razones para estudiar los algoritmos
de ordenamiento. Entre ellas están:
1.Tienen utilidad práctica porque el
ordenamiento es una actividad frecuente.
2.El trabajo con conjuntos grandes de datos en
las computadoras se facilita si los datos están
ordenados.
3.Se ha ideado una buena cantidad de
algoritmos para ordenar, ya que es posible
enfocar un problema dado desde muchos
puntos de vista distintos.
Búsqueda, ordenación y mezcla de arreglos.
Los algoritmos a estudiar se denominan
ordenamientos internos porque se supone que
los datos están en la memoria de acceso
aleatorio de alta velocidad de la computadora.
Los algoritmos para ordenar grandes conjuntos
de datos almacenados en dispositivos de
almacenamiento, con restricciones sobre la
forma de acceder a los datos, se denominan
ordenamientos externos.
Búsqueda, ordenación y mezcla de arreglos.
Ejemplos:
1.Un banco ordena todos los cheques por número
de cuenta, de manera que puede preparar los
estados individuales del banco al final de cada
mes.
2.Las empresas de telefonía ordenan sus listas de
cuentas por apellido y, dentro de este
ordenamiento, hacen otro por nombre para
facilitar la búsqueda de números telefónicos.
3.Virtualmente todas las empresas deben ordenar
algún tipo de dato y, en muchos casos,
cantidades masivas de éstos.
Método de la burbuja:
La idea de este algoritmo consiste en hacer
repetidas pasadas sobre el array, trasladando
en cada una, el elemento más pequeño hasta el
principio del array. Este algoritmo se conoce
como ordenación por el método de la burbuja,
porque si se consideran los elementos como si
estuviera en posición vertical y fueran burbujas
con un cierto peso en un depósito de agua,
dichas burbujas irían ascendiendo en función de
su valor.
Métodos de ordenación.
Métodos de ordenación.
Método de la burbuja:
1. Comparamos el primer elemento con el segundo, el segundo
con el tercero, el tercero con el cuarto, etc. Cuando el
resultado de una comparación sea "mayor que'', se
intercambian los valores de los elementos comparados. Con
esto conseguimos llevar el valor mayor a la posición n.
2. Repetimos el punto 1, ahora para los n-1 primeros elementos
de la lista. Con esto conseguimos llevar el valor mayor de
éstos a la posición n-1.
3. Repetimos el punto 1, ahora para los n-2 primeros elementos
de la lista, y así sucesivamente.
4. Se termina después de repetir el proceso descrito, n-1
veces, o cuando al finalizar la ejecución del iésimo proceso
no haya habido ningún cambio.
Método de la burbuja:
<función clasificar(array "a" de "n" elementos)>
["a" es un array cuyos elementos son as, a1, ..., an-1]
n=n-1
DO WHILE ("a" no esté ordenado y n > 0 )
i= 1
DOWHILE(i<=n)
IF(a[i-l]>a[i])THEN permutar a[i-1] con a[i]
ENDIF
i = i+1
ENDDO
n=n-1
ENDDO
END <clasificar>
Métodos de ordenación.
Método de la burbuja:
#include <iostream>
using namespace std;
#include <cstdlib>
int const DIM = 10;
typedef float tArray[DIM];
void rellenarArray(tArray);
void ordenarArray(tArray);
void mostrarArray(const tArray);
Métodos de ordenación.
Método de la burbuja:
int main()
{tArray miArray; rellenarArray(miArray);
ordenarArray(miArray); mostrarArray(miArray);
system("PAUSE"); return 0;}
void rellenarArray(tArray miArray){
cout << "Introduzca los 10 elementos del array"
<< endl;
for (int i = 0; i < DIM; i++)
{ // Rellenamos las 10 posiciones del array
cin >> miArray[i];}}
Métodos de ordenación.
Método de la burbuja:
void ordenarArray(tArray miArray){
float temporal;
for (int i = 0;i < DIM; i++)
{for (int j = 0; j< DIM-1; j++){
if (miArray[j] < miArray[j+1])
{/ * Ordena el array de mayor a menor, cambiar
el "<" a ">" para ordenar de menor a mayor*/
temporal = miArray[j]; miArray[j] = miArray[j+1];
miArray[j+1] = temporal;}}}}
Métodos de ordenación.
Método de la burbuja:
void mostrarArray(const tArray miArray){
cout << "Mostrando array ordenado..." <<
endl;
for (int i = 0; i < DIM; i++)
// Imprime las 10 posiciones
cout << miArray[i] << endl;}
Métodos de ordenación.
Método de inserción:
1.Inicialmente, se ordenan los dos primeros
elementos del array.
2.Luego se inserta el tercer elemento en la
posición correcta con respecto a los dos
primeros.
3.A continuación se inserta el cuarto elemento
en la posición correcta con respecto a los tres
primeros elementos ya clasificados.
4.Y así sucesivamente hasta llegar al último
elemento del array.
Métodos de ordenación.
Método de inserción:
<función inserción(array "a" de "n" elementos)>
["a" es un array cuyos elementos son a0, a1, ...,
an-1]
i= 1
DOWHILE(i<n)
x = a[i]
insertar x en la posición correcta entre a0y ai
ENDDO
END <inserción>
Métodos de ordenación.
Método de inserción:
#include<iostream>
#include"leearreglo.h"
using namespace std;
#define largo 50
void insercionDirecta(int A[],int n)
{ int i,j,v;
for (i = 1; i < n; i++)
{ v = A[i]; j = i - 1;
while (j >= 0 && A[j] > v)
{ A[j + 1] = A[j];
j--; }
A[j + 1] = v; } }
Métodos de ordenación.
Método de inserción:
void main ()
{ int A[largo],n;
do{
cout<<"Cantidad de numeros a ingresar: ";cin>>n;
if(n<=0||n>largo)
cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl;
}while(n<=0||n>largo);
leeCadena(n,A);
insercionDirecta(A,n);
muestraCadena(n,A);}
Métodos de ordenación.
Método de inserción:
#include<iostream>
using namespace std;
void leeCadena(int cant,int n[])
{ int i;
for(i=0;i<cant;i++)
{ cout<<"Ingresa numero "<<i+1<<": ";
cin>>n[i]; } }
Métodos de ordenación.
Método de inserción:
void muestraCadena(int cant,int n[])
{
int i;
for(i=0;i<cant;i++)
{
cout<<n[i]<<endl;
}
}
Métodos de ordenación.
Método quicksort:
1.Se selecciona un valor perteneciente al rango de
valores del array. Este valor se puede escoger
aleatoriamente o haciendo la media de un
pequeño conjunto de valores tomados del array.
El valor óptimo sería la mediana (el valor que es
menor o igual que los valores correspondientes a
la mitad de los elementos del array y mayor o
igual que los valores correspondientes a la otra
mitad). No obstante, incluso en el peor de los
casos (el valor escogido está en un extremo),
quicksort funciona correctamente.
Métodos de ordenación.
Método quicksort:
2.Se divide el array en dos partes, una con
todos los elementos menores que el valor
seleccionado y otra con todos los elementos
mayores o iguales.
3.Se repiten los puntos 1 y 2 para cada una de
las partes en la que se ha dividido el array,
hasta que esté ordenado,
4.El proceso descrito es esencialmente
recursivo.
Métodos de ordenación.
Mètodo quicksort
<función qs(array "a" )>
Se elige un valor x del array
DO WHILE ( "a" no esté dividido en dos partes )
[dividir "a" en dos partes: a_inf y a_sup]
a_inf con los elementos ai < x
a_sup con los elementos ai>= x
ENDDO
IF ( existe a_inf ) THEN
qs( a_inf )
ENDIF
IF ( existe a_sup ) THEN
qs( a_sup)
ENDIF
END <qs>
Métodos de ordenación.
Wikibooks
https://es.wikibooks.org/wiki/Programaci%C
3%B3n_en_C/Algoritmos_y_Estructuras_de
_Datos
Más información en enlaces.
Búsqueda lineal o secuencial:
Este método de búsqueda, aunque válido,
es el menos eficiente. Se basa en comparar
el valor que se desea buscar con cada uno
de los valores del array. El array no tiene por
qué estar clasificado.
Métodos de búsqueda.
Búsqueda lineal o secuencial:
Consiste en ir recorriendo secuencialmente la
colección de datos hasta encontrar el elemento
buscado o, en última instancia, hasta recorrer la
colección completa, en cuyo caso podemos
estar seguros que el elemento buscado no se
encuentra en la colección.
La búsqueda lineal es adecuada como
mecanismo de búsqueda general en
colecciones de datos sin organización conocida.
Métodos de búsqueda.
Búsqueda secuencial:
clase Busqueda { privado caracter vec(6)
publico cargar(caracter valor, entero i){ vec(i) = valor }
publico entero secuencial (caracter x)
{ entero bandera = 0
entero indice = 0, i = 1
Mientras ((bandera == 0 ) O ( i <= 6))
si (vec (i ) == x) Entonces bandera = 1 indice = i
Fin Si
i = i + 1
Fin Mientras
retornar indice}}
Métodos de búsqueda.
Búsqueda secuencial:
INICIO
{ caracter valores entero veces, resp
Busqueda obj
Para veces=1, veces, 1
Imprimir (“Teclee una letra:”)
Leer (valores)
obj.cargar (valores,veces)
Fin Para
Imprimir (“Introduzca el carácter a buscar:”)
Leer (valores)
resp= obj.secuencial (valores)
Si (resp == 0) Entonces Imprimir (“No se encontro”, valores, “ en el vector”)
De Otro Modo Imprimir (“El caracter” , valores , “ esta en la posición”, resp)
Fin Si
FIN
Métodos de búsqueda.
Búsqueda secuencial:
<función Búsqueda_S( array a, valor que queremos buscar)>
i=0
DO WHILE ( no encontrado )
IF ( valor = a[i] )
encontrado
ENDIF
i = i+l
ENDDO
END <Búsqueda_S>
Métodos de búsqueda.
Búsqueda secuencial:
int buscar_alt(int x, const Vector& v)
{int idx = int(v.size());
bool ok = false;
for (int i = 0; (i < int(v.size())) && ! ok; ++i) {
if (x == v[i]) {
ok = true;
idx = i;}
}
return idx;}
Métodos de búsqueda.
Búsqueda secuencial:
Como puede observarse, recorremos uno a uno
todos los elementos hasta que podemos responder
en sentido afirmativo o negativo. Respondemos en
sentido negativo (el elemento no se encuentra) si el
índice del siguiente elemento a probar está más
allá del último elemento del array. Respondemos en
sentido positivo si el elemento indicado por la
variable i contiene el elemento buscado. En tal
caso, acaba el bucle y se devuelve dicha posición i.
Nótese que si el elemento no se encuentra se
devuelve v.size(), que es una posición no válida del
array.
Métodos de búsqueda.
Búsqueda secuencial:
La búsqueda secuencial es simple, pero requiere
recorrer todo el array para estar seguros de que el
elemento a buscar no se encuentra en la colección. Si el
array tiene gran cantidad de elementos y necesitamos
que las búsquedas se realicen de forma rápida, este
mecanismo podría no ser adecuado. Si estamos
interesados en acelerar el proceso de búsqueda,
necesitamos información adicional que de pistas para
poder realizar una implementación más eficiente.
Necesitamos información acerca de la organización
interna de los elementos en el array. Hay diferentes
formas de organizar la información en el array que nos
permiten implemementar algoritmos de búsqueda más
eficientes.
Métodos de búsqueda.
Búsqueda binaria:
Un método eficiente de búsqueda, que
puede aplicarse a los arrays clasificados, es
la búsqueda binaria. Partiendo de que los
elementos del array están almacenados en
orden ascendente.
Métodos de búsqueda.
Búsqueda binaria:
La idea consiste en seleccionar un elemento de la
colección y comprobar si se trata del elemento
buscado. Si es así el proceso termina con éxito,
pero si no, podemos aprovechar que sabemos que
los elementos se encuentran ordenados y descartar
todos los elementos que se encuentran a la
derecha del mismo o a su izquierda (según la
relación entre el valor seleccionado y el valor
buscado). Este proceso se repite hasta encontrar el
elemento o hasta que no queden elementos en la
colección, en cuyo caso el elemento no habrá sido
encontrado.
Métodos de búsqueda.
Búsqueda binaria:
1. Se selecciona el elemento del centro o aproximadamente del
centro del array. Si el valor a buscar no coincide con el
elemento seleccionado y es mayor que él, se continúa la
búsqueda en la segunda mitad del array.
2. Si, por el contrario, el valor a buscar es menor que el valor
del elemento seleccionado, la búsqueda continúa en la
primera mitad del array. En ambos casos, se halla de nuevo
el elemento central, correspondiente al nuevo intervalo de
búsqueda, repitiéndose el ciclo.
3. El proceso se repite hasta que se encuentra el valor a
buscar, o bien hasta que el intervalo de búsqueda sea nulo,
lo que indicará que el elemento buscado no está en el array.
Métodos de búsqueda.
Búsqueda binaria:
<función Búsqueda-B( array a, valor que queremos buscar )>
DO WHILE ( exista un intervalo donde buscar )
x = elemento mitad del intervalo de búsqueda
IF(valor=x)THEN
encontrado
ELSE
IF(valor>x)THEN
buscar "valor" en la segunda mitad del intervalo de búsqueda
ENDIF
IF(valor<x)THEN
buscar "valor" en la primera mitad del intertalo de búsqueda
ENDIF
ENDIF
ENDDO
END <Búsqueda_B>
Métodos de búsqueda.
Búsqueda binaria:
/* busca la posición del primer elemento igual a x, si no se
encuentra, retorna v.size()*/
unsigned buscar_bin(int x, const Vector& v)
{unsigned i = 0 ;
unsigned f = v.size() ;
unsigned m = (i + f) / 2 ;
while ((i < f) && (x != v[m])) {
if (x < v[m]) {f = m ;} else {i = m + 1 ;}
m = (i + f) / 2 ;}
if (i >= f) {m = int(v.size());}
return m;
}
Métodos de búsqueda.

Contenu connexe

Tendances

Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directatavo_3315_
 
Estructuras lineales unidad 3
Estructuras lineales unidad 3Estructuras lineales unidad 3
Estructuras lineales unidad 3eliezerbs
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
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
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en cJessica Suarez
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairoYossLu Molina
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacionashildir
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamientoOrlando Torres
 
Ejemplo de uno a uno
Ejemplo de uno a unoEjemplo de uno a uno
Ejemplo de uno a unorafita07zr
 
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 datosJosé Antonio Sandoval Acosta
 

Tendances (20)

Metodo burbuja
Metodo burbujaMetodo burbuja
Metodo burbuja
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
Estructuras lineales unidad 3
Estructuras lineales unidad 3Estructuras lineales unidad 3
Estructuras lineales unidad 3
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
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)
 
Recursividad
RecursividadRecursividad
Recursividad
 
Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
Programacion estructura de arboles en c
Programacion estructura de arboles en cProgramacion estructura de arboles en c
Programacion estructura de arboles en c
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Estructuras de datos osvaldo cairo
Estructuras de datos   osvaldo cairoEstructuras de datos   osvaldo cairo
Estructuras de datos osvaldo cairo
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacion
 
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
 
Estructuras no-lineales
Estructuras no-linealesEstructuras no-lineales
Estructuras no-lineales
 
17 arreglos bidimensionales java
17 arreglos bidimensionales java17 arreglos bidimensionales java
17 arreglos bidimensionales java
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Ejemplo de uno a uno
Ejemplo de uno a unoEjemplo de uno a uno
Ejemplo de uno a uno
 
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
 

Similaire à Mètodos de Ordenaciòn y bùsqueda

Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1VivianaG
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busquedaIrvingMoran4
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)jairml
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++compumet sac
 
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
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busquedaOsirysRock
 
Angela y vicky I-B
Angela y vicky I-BAngela y vicky I-B
Angela y vicky I-BvictoriaRJ
 
Anderson martinez arreglos
Anderson martinez arreglosAnderson martinez arreglos
Anderson martinez arreglosadrmrtinzm
 
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, Beneficiosejosue23
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos OrdenamientoDaniel Guaycha
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 

Similaire à Mètodos de Ordenaciòn y bùsqueda (20)

concepto de estructuras de datos
concepto de estructuras de datosconcepto de estructuras de datos
concepto de estructuras de datos
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Arreglos en c++2020
Arreglos en c++2020Arreglos en c++2020
Arreglos en c++2020
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Arreglos
ArreglosArreglos
Arreglos
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Tema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdfTema 5 - Estructuras de datos.pdf
Tema 5 - Estructuras de datos.pdf
 
Tema6
Tema6Tema6
Tema6
 
Arreglos enitmar
Arreglos enitmarArreglos enitmar
Arreglos enitmar
 
Angela y vicky I-B
Angela y vicky I-BAngela y vicky I-B
Angela y vicky I-B
 
Arrays
ArraysArrays
Arrays
 
Anderson martinez arreglos
Anderson martinez arreglosAnderson martinez arreglos
Anderson martinez arreglos
 
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
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
arrays
arraysarrays
arrays
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 

Plus de Facultad de Ciencias y Sistemas

Introducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaIntroducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaFacultad de Ciencias y Sistemas
 

Plus de Facultad de Ciencias y Sistemas (20)

Ejercicios HTML 5
Ejercicios HTML 5Ejercicios HTML 5
Ejercicios HTML 5
 
CSS3
CSS3CSS3
CSS3
 
09 ordenamiento-en-vectores-en-c
09 ordenamiento-en-vectores-en-c09 ordenamiento-en-vectores-en-c
09 ordenamiento-en-vectores-en-c
 
08 mas-de-vectores-en-c
08 mas-de-vectores-en-c08 mas-de-vectores-en-c
08 mas-de-vectores-en-c
 
07 vectores-en-c final
07 vectores-en-c final07 vectores-en-c final
07 vectores-en-c final
 
06 clases-en-c
06 clases-en-c06 clases-en-c
06 clases-en-c
 
05 cadenas-de-caracteres-en-c
05 cadenas-de-caracteres-en-c05 cadenas-de-caracteres-en-c
05 cadenas-de-caracteres-en-c
 
04 mas-estructuras-iterativas-en-c
04 mas-estructuras-iterativas-en-c04 mas-estructuras-iterativas-en-c
04 mas-estructuras-iterativas-en-c
 
03 estructuras-iterativas-en-c
03 estructuras-iterativas-en-c03 estructuras-iterativas-en-c
03 estructuras-iterativas-en-c
 
02 mas-de-las-estructuras-de-programacion-en-c
02 mas-de-las-estructuras-de-programacion-en-c02 mas-de-las-estructuras-de-programacion-en-c
02 mas-de-las-estructuras-de-programacion-en-c
 
01 estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c01 estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c
 
Procesamiento del lenguaje natural con python
Procesamiento del lenguaje natural con pythonProcesamiento del lenguaje natural con python
Procesamiento del lenguaje natural con python
 
Actividades de aprendizaje en Moodle
Actividades de aprendizaje en MoodleActividades de aprendizaje en Moodle
Actividades de aprendizaje en Moodle
 
Creación de grupos en Moodle
Creación de grupos en MoodleCreación de grupos en Moodle
Creación de grupos en Moodle
 
Introducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaIntroducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con Java
 
Como crear un diagrama de clases
Como crear un diagrama de clasesComo crear un diagrama de clases
Como crear un diagrama de clases
 
Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02
 
Diagrama de clases - Ejemplo monográfico 01
Diagrama de clases - Ejemplo monográfico 01Diagrama de clases - Ejemplo monográfico 01
Diagrama de clases - Ejemplo monográfico 01
 
Otro ejemplo de diagrama de clases UML
Otro ejemplo de diagrama de clases UMLOtro ejemplo de diagrama de clases UML
Otro ejemplo de diagrama de clases UML
 
Un ejemplo de diagrama de clases
Un ejemplo de diagrama de clasesUn ejemplo de diagrama de clases
Un ejemplo de diagrama de clases
 

Dernier

Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxNadiaMartnez11
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnnlitzyleovaldivieso
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 

Dernier (20)

Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 

Mètodos de Ordenaciòn y bùsqueda

  • 1. Introducción a la Programación. Tema: Búsqueda, ordenación y mezcla de arreglos Unidad II: Elementos de Programación .
  • 2. 2.8 Definición de arreglos unidimensionales y bidimensionales. 2.9 Búsqueda, ordenación y mezcla de arreglos. 2.10 Estructura de datos. 2.11 Programación modular. 2.12 Definición de punteros. 2.13 Estructuras dinámicas. Unidad II: Elementos de Programación
  • 3. Bibliografía Algoritmos computacionales. Introduccción al análisis y diseño. Editorial Addison Wesley. Tercera edición. 2002. Baase Sara, Van Gelder Allen. Capítulo 4. Página 149 – 151.
  • 4. Bibliografía Cómo programar C/C++ y Java Introduccción al análisis y diseño. Editorial Pearson Prentice Hall Cuarta edición. 2004. Deitel. Deitel. Capítulo 6. Página 197.
  • 5. Bibliografía Curso de programación C/C++ Fco. Javier Ceballos Sierra. Profesor titular de la Escuela Universitaria Politécnica Universidad de Alcalá de Henares. Editorial RA-MA. Páginas 492, 493, 495-498, 502, 503.
  • 6. Bibliografía Fundamentos de Programación con el Lenguaje de Programación C++ Vicente Benjumea y Manuel Roldán 31 de mayo de 2017 UNIVERSIDAD DE MÁLAGA. Dpto. Lenguajes y CC. Computación E.T.S.I. Informática Páginas: 85-88, 90,
  • 7. Búsqueda, ordenación y mezcla de arreglos. Los algoritmos para ordenar sirven para acomodar en orden los elementos de un conjunto. Ésto fue uno de los primeros problemas que se estudiaron intensamente en las ciencias de la computación. Muchas de las aplicaciones más conocidas del paradigma de diseño de algoritmos Divide y Vencerás son algoritmos de ordenamiento. Durante los años sesenta, cuando el procesamiento comercial de datos se automatizó en gran escala, el programa de ordenamiento era el que se ejecutaba con mayor frecuencia en muchas instalaciones de cómputo.
  • 8. Búsqueda, ordenación y mezcla de arreglos. Hay varias razones para estudiar los algoritmos de ordenamiento. Entre ellas están: 1.Tienen utilidad práctica porque el ordenamiento es una actividad frecuente. 2.El trabajo con conjuntos grandes de datos en las computadoras se facilita si los datos están ordenados. 3.Se ha ideado una buena cantidad de algoritmos para ordenar, ya que es posible enfocar un problema dado desde muchos puntos de vista distintos.
  • 9. Búsqueda, ordenación y mezcla de arreglos. Los algoritmos a estudiar se denominan ordenamientos internos porque se supone que los datos están en la memoria de acceso aleatorio de alta velocidad de la computadora. Los algoritmos para ordenar grandes conjuntos de datos almacenados en dispositivos de almacenamiento, con restricciones sobre la forma de acceder a los datos, se denominan ordenamientos externos.
  • 10. Búsqueda, ordenación y mezcla de arreglos. Ejemplos: 1.Un banco ordena todos los cheques por número de cuenta, de manera que puede preparar los estados individuales del banco al final de cada mes. 2.Las empresas de telefonía ordenan sus listas de cuentas por apellido y, dentro de este ordenamiento, hacen otro por nombre para facilitar la búsqueda de números telefónicos. 3.Virtualmente todas las empresas deben ordenar algún tipo de dato y, en muchos casos, cantidades masivas de éstos.
  • 11. Método de la burbuja: La idea de este algoritmo consiste en hacer repetidas pasadas sobre el array, trasladando en cada una, el elemento más pequeño hasta el principio del array. Este algoritmo se conoce como ordenación por el método de la burbuja, porque si se consideran los elementos como si estuviera en posición vertical y fueran burbujas con un cierto peso en un depósito de agua, dichas burbujas irían ascendiendo en función de su valor. Métodos de ordenación.
  • 12. Métodos de ordenación. Método de la burbuja: 1. Comparamos el primer elemento con el segundo, el segundo con el tercero, el tercero con el cuarto, etc. Cuando el resultado de una comparación sea "mayor que'', se intercambian los valores de los elementos comparados. Con esto conseguimos llevar el valor mayor a la posición n. 2. Repetimos el punto 1, ahora para los n-1 primeros elementos de la lista. Con esto conseguimos llevar el valor mayor de éstos a la posición n-1. 3. Repetimos el punto 1, ahora para los n-2 primeros elementos de la lista, y así sucesivamente. 4. Se termina después de repetir el proceso descrito, n-1 veces, o cuando al finalizar la ejecución del iésimo proceso no haya habido ningún cambio.
  • 13. Método de la burbuja: <función clasificar(array "a" de "n" elementos)> ["a" es un array cuyos elementos son as, a1, ..., an-1] n=n-1 DO WHILE ("a" no esté ordenado y n > 0 ) i= 1 DOWHILE(i<=n) IF(a[i-l]>a[i])THEN permutar a[i-1] con a[i] ENDIF i = i+1 ENDDO n=n-1 ENDDO END <clasificar> Métodos de ordenación.
  • 14. Método de la burbuja: #include <iostream> using namespace std; #include <cstdlib> int const DIM = 10; typedef float tArray[DIM]; void rellenarArray(tArray); void ordenarArray(tArray); void mostrarArray(const tArray); Métodos de ordenación.
  • 15. Método de la burbuja: int main() {tArray miArray; rellenarArray(miArray); ordenarArray(miArray); mostrarArray(miArray); system("PAUSE"); return 0;} void rellenarArray(tArray miArray){ cout << "Introduzca los 10 elementos del array" << endl; for (int i = 0; i < DIM; i++) { // Rellenamos las 10 posiciones del array cin >> miArray[i];}} Métodos de ordenación.
  • 16. Método de la burbuja: void ordenarArray(tArray miArray){ float temporal; for (int i = 0;i < DIM; i++) {for (int j = 0; j< DIM-1; j++){ if (miArray[j] < miArray[j+1]) {/ * Ordena el array de mayor a menor, cambiar el "<" a ">" para ordenar de menor a mayor*/ temporal = miArray[j]; miArray[j] = miArray[j+1]; miArray[j+1] = temporal;}}}} Métodos de ordenación.
  • 17. Método de la burbuja: void mostrarArray(const tArray miArray){ cout << "Mostrando array ordenado..." << endl; for (int i = 0; i < DIM; i++) // Imprime las 10 posiciones cout << miArray[i] << endl;} Métodos de ordenación.
  • 18. Método de inserción: 1.Inicialmente, se ordenan los dos primeros elementos del array. 2.Luego se inserta el tercer elemento en la posición correcta con respecto a los dos primeros. 3.A continuación se inserta el cuarto elemento en la posición correcta con respecto a los tres primeros elementos ya clasificados. 4.Y así sucesivamente hasta llegar al último elemento del array. Métodos de ordenación.
  • 19. Método de inserción: <función inserción(array "a" de "n" elementos)> ["a" es un array cuyos elementos son a0, a1, ..., an-1] i= 1 DOWHILE(i<n) x = a[i] insertar x en la posición correcta entre a0y ai ENDDO END <inserción> Métodos de ordenación.
  • 20. Método de inserción: #include<iostream> #include"leearreglo.h" using namespace std; #define largo 50 void insercionDirecta(int A[],int n) { int i,j,v; for (i = 1; i < n; i++) { v = A[i]; j = i - 1; while (j >= 0 && A[j] > v) { A[j + 1] = A[j]; j--; } A[j + 1] = v; } } Métodos de ordenación.
  • 21. Método de inserción: void main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); insercionDirecta(A,n); muestraCadena(n,A);} Métodos de ordenación.
  • 22. Método de inserción: #include<iostream> using namespace std; void leeCadena(int cant,int n[]) { int i; for(i=0;i<cant;i++) { cout<<"Ingresa numero "<<i+1<<": "; cin>>n[i]; } } Métodos de ordenación.
  • 23. Método de inserción: void muestraCadena(int cant,int n[]) { int i; for(i=0;i<cant;i++) { cout<<n[i]<<endl; } } Métodos de ordenación.
  • 24. Método quicksort: 1.Se selecciona un valor perteneciente al rango de valores del array. Este valor se puede escoger aleatoriamente o haciendo la media de un pequeño conjunto de valores tomados del array. El valor óptimo sería la mediana (el valor que es menor o igual que los valores correspondientes a la mitad de los elementos del array y mayor o igual que los valores correspondientes a la otra mitad). No obstante, incluso en el peor de los casos (el valor escogido está en un extremo), quicksort funciona correctamente. Métodos de ordenación.
  • 25. Método quicksort: 2.Se divide el array en dos partes, una con todos los elementos menores que el valor seleccionado y otra con todos los elementos mayores o iguales. 3.Se repiten los puntos 1 y 2 para cada una de las partes en la que se ha dividido el array, hasta que esté ordenado, 4.El proceso descrito es esencialmente recursivo. Métodos de ordenación.
  • 26. Mètodo quicksort <función qs(array "a" )> Se elige un valor x del array DO WHILE ( "a" no esté dividido en dos partes ) [dividir "a" en dos partes: a_inf y a_sup] a_inf con los elementos ai < x a_sup con los elementos ai>= x ENDDO IF ( existe a_inf ) THEN qs( a_inf ) ENDIF IF ( existe a_sup ) THEN qs( a_sup) ENDIF END <qs> Métodos de ordenación.
  • 28. Búsqueda lineal o secuencial: Este método de búsqueda, aunque válido, es el menos eficiente. Se basa en comparar el valor que se desea buscar con cada uno de los valores del array. El array no tiene por qué estar clasificado. Métodos de búsqueda.
  • 29. Búsqueda lineal o secuencial: Consiste en ir recorriendo secuencialmente la colección de datos hasta encontrar el elemento buscado o, en última instancia, hasta recorrer la colección completa, en cuyo caso podemos estar seguros que el elemento buscado no se encuentra en la colección. La búsqueda lineal es adecuada como mecanismo de búsqueda general en colecciones de datos sin organización conocida. Métodos de búsqueda.
  • 30. Búsqueda secuencial: clase Busqueda { privado caracter vec(6) publico cargar(caracter valor, entero i){ vec(i) = valor } publico entero secuencial (caracter x) { entero bandera = 0 entero indice = 0, i = 1 Mientras ((bandera == 0 ) O ( i <= 6)) si (vec (i ) == x) Entonces bandera = 1 indice = i Fin Si i = i + 1 Fin Mientras retornar indice}} Métodos de búsqueda.
  • 31. Búsqueda secuencial: INICIO { caracter valores entero veces, resp Busqueda obj Para veces=1, veces, 1 Imprimir (“Teclee una letra:”) Leer (valores) obj.cargar (valores,veces) Fin Para Imprimir (“Introduzca el carácter a buscar:”) Leer (valores) resp= obj.secuencial (valores) Si (resp == 0) Entonces Imprimir (“No se encontro”, valores, “ en el vector”) De Otro Modo Imprimir (“El caracter” , valores , “ esta en la posición”, resp) Fin Si FIN Métodos de búsqueda.
  • 32. Búsqueda secuencial: <función Búsqueda_S( array a, valor que queremos buscar)> i=0 DO WHILE ( no encontrado ) IF ( valor = a[i] ) encontrado ENDIF i = i+l ENDDO END <Búsqueda_S> Métodos de búsqueda.
  • 33. Búsqueda secuencial: int buscar_alt(int x, const Vector& v) {int idx = int(v.size()); bool ok = false; for (int i = 0; (i < int(v.size())) && ! ok; ++i) { if (x == v[i]) { ok = true; idx = i;} } return idx;} Métodos de búsqueda.
  • 34. Búsqueda secuencial: Como puede observarse, recorremos uno a uno todos los elementos hasta que podemos responder en sentido afirmativo o negativo. Respondemos en sentido negativo (el elemento no se encuentra) si el índice del siguiente elemento a probar está más allá del último elemento del array. Respondemos en sentido positivo si el elemento indicado por la variable i contiene el elemento buscado. En tal caso, acaba el bucle y se devuelve dicha posición i. Nótese que si el elemento no se encuentra se devuelve v.size(), que es una posición no válida del array. Métodos de búsqueda.
  • 35. Búsqueda secuencial: La búsqueda secuencial es simple, pero requiere recorrer todo el array para estar seguros de que el elemento a buscar no se encuentra en la colección. Si el array tiene gran cantidad de elementos y necesitamos que las búsquedas se realicen de forma rápida, este mecanismo podría no ser adecuado. Si estamos interesados en acelerar el proceso de búsqueda, necesitamos información adicional que de pistas para poder realizar una implementación más eficiente. Necesitamos información acerca de la organización interna de los elementos en el array. Hay diferentes formas de organizar la información en el array que nos permiten implemementar algoritmos de búsqueda más eficientes. Métodos de búsqueda.
  • 36. Búsqueda binaria: Un método eficiente de búsqueda, que puede aplicarse a los arrays clasificados, es la búsqueda binaria. Partiendo de que los elementos del array están almacenados en orden ascendente. Métodos de búsqueda.
  • 37. Búsqueda binaria: La idea consiste en seleccionar un elemento de la colección y comprobar si se trata del elemento buscado. Si es así el proceso termina con éxito, pero si no, podemos aprovechar que sabemos que los elementos se encuentran ordenados y descartar todos los elementos que se encuentran a la derecha del mismo o a su izquierda (según la relación entre el valor seleccionado y el valor buscado). Este proceso se repite hasta encontrar el elemento o hasta que no queden elementos en la colección, en cuyo caso el elemento no habrá sido encontrado. Métodos de búsqueda.
  • 38. Búsqueda binaria: 1. Se selecciona el elemento del centro o aproximadamente del centro del array. Si el valor a buscar no coincide con el elemento seleccionado y es mayor que él, se continúa la búsqueda en la segunda mitad del array. 2. Si, por el contrario, el valor a buscar es menor que el valor del elemento seleccionado, la búsqueda continúa en la primera mitad del array. En ambos casos, se halla de nuevo el elemento central, correspondiente al nuevo intervalo de búsqueda, repitiéndose el ciclo. 3. El proceso se repite hasta que se encuentra el valor a buscar, o bien hasta que el intervalo de búsqueda sea nulo, lo que indicará que el elemento buscado no está en el array. Métodos de búsqueda.
  • 39. Búsqueda binaria: <función Búsqueda-B( array a, valor que queremos buscar )> DO WHILE ( exista un intervalo donde buscar ) x = elemento mitad del intervalo de búsqueda IF(valor=x)THEN encontrado ELSE IF(valor>x)THEN buscar "valor" en la segunda mitad del intervalo de búsqueda ENDIF IF(valor<x)THEN buscar "valor" en la primera mitad del intertalo de búsqueda ENDIF ENDIF ENDDO END <Búsqueda_B> Métodos de búsqueda.
  • 40. Búsqueda binaria: /* busca la posición del primer elemento igual a x, si no se encuentra, retorna v.size()*/ unsigned buscar_bin(int x, const Vector& v) {unsigned i = 0 ; unsigned f = v.size() ; unsigned m = (i + f) / 2 ; while ((i < f) && (x != v[m])) { if (x < v[m]) {f = m ;} else {i = m + 1 ;} m = (i + f) / 2 ;} if (i >= f) {m = int(v.size());} return m; } Métodos de búsqueda.