SlideShare una empresa de Scribd logo
Tema 8b
Búsqueda y ordenación en arreglos
Ordenación
• Es un proceso que altera el orden de los elementos
de un conjunto.
• Tiene asociada una relación de orden
– Números: valor
– Letras: alfabeto
– Auto: ¿Velocidad? ¿Tamaño? ¿Autonomía?
– Amigos: ¿…..?
• La ordenación puede ser ascendente o
descendente.
Ordenación
• Métodos
– Burbuja (Bubble sort)
– Selección
– Inserción
– Burbuja bidireccional
– Rápido (Quicksort)
Bubble sort
• Los elementos más
“pesados” “bajan”
• Los elementos más
“livianos” “suben”
• Cuando ya no puede
bajar más se sigue con
el resto.
Bubble sort
r
a
c
f
b
e
i
a
1-Como r es más “pesada” que a,
r “baja” y a “sube”
a
r
c
f
b
e
i
a
a
c
r
f
b
e
i
a
2-Como r es más “pesada” que c,
r “baja” y c “sube”
a
c
f
b
e
i
a
r
…
Bubble sort
void bubblesort(int numeros[]){
int i,j;
for(i=1;i<N;i++)
for(j=0;j<(N-i);j++)
if(numeros[j]>numeros[j+1]){
int aux = numeros[j+1];
numeros[j+1] = numeros[j];
numeros[j] = aux;
}
}
Selección
• Se selecciona el minimo valor entre los N
elementos y se intercambia con el primero.
• Se repite la operación con los N-1
elementos restantes.
Selección
void selectionsort_up(int numeros[]){
int i,j,k,r;
int n;
int inter;
for(i=0;i<N-1;i++){
inter=0;
k=i;
n=numeros[i];
for(j=i+1;j<N;j++)
if(numeros[j]<n){
r=j;
n=numeros[j];
inter=1;
}
if(inter){
numeros[r] = numeros[i];
numeros[i] = n;
}
}
}
Inserción
• Ordena el subarreglos de manera creciente
• Ordena los primeros dos elementos
• Luego va insertando los siguientes en su
posición ordenada en el subarreglo.
Inserción
void insertionsort_up(int numeros[]){
int i,j;
int n;
for(i=1;i<N;i++){
n=numeros[i];
for(j=i-1; (j>=0)&&(n<numeros[j]) ;j--)
numeros[j+1] = numeros[j];
numeros[j+1] = n;
}
}
Quicksort
• Los algoritmos anteriores ejecutan un
numero de instrucción del orden de N2
– Ordenar 10 elementos ejecuta a100
instrucciones.
– Ordenar 100 elementos ejecuta a10000
instrucciones.
– Ordenar 1000 elementos ejecuta a1000000
instrucciones.
Quicksort
Nº de elementos
Tiempo
de
ejecución
aN2
Quicksort
• Quicksort es un algoritmo de proposito
general.
• Es en la mayoria de los casos el más
eficiente.
• Tiene un orden a N log(N)
• Tiene una estructura recursiva.
Quicksort
Nº de elementos
Tiempo
de
ejecución
aNlog(N)
Búsqueda
• Consiste en buscar un elemento dentro de un
conjunto
• Requiere de una relación de igualdad
– Números: Igual valor
• ¿Cuántos decimales considerar?
– Letras: mismo símbolo
• ¿Mayusculas y minúsculas?
– Autos
• Modelo y año
• Placa patente
• Codigo chasis
• Etc…
Búsqueda
• Métodos
– Secuencial
– Binaria
Búsqueda secuencial
• Recorrer uno por uno los elementos.
• Comparar según sea el criterio.
• Se puede querer recuperar el valor o ela
posición.
• Tiene un orden aN
Búsqueda secuencial
int secuencial_search(int numeros[], int valor){
int i=0;
for(i=0;i<N;i++)
if(numeros[i]==valor) return i;
return -1;
}
Búsqueda secuencial
• En arreglos bidimensionales el algortimo es
similar.
• Se puede hacer por filas o por columas.
• Esta decision puede afectar el rendimiento
– Por lo general, preferir por filas.
Búsqueda secuencial
int bisecuencial_search(int numeros[][N], int valor){
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(numeros[i][j]==valor) return i*N+j;
return -1;
}
…
pos = bisecuencial_search(binumeros, 11);
if(pos>=0)
printf("bisec) numeros[%d][%d] = %dn",
pos/N,pos%N,
binumeros[pos/N][pos%N]);
Búsqueda binaria
• Muy rápida
• Requiere datos ordenados
• No sirve para recuperar la posición original.
• “Encierra” el numero búscado “achicando”
a la mitad el intervalo que parece
contenerlo.
• Tiene un orden alog2N
Búsqueda binaria
int binary_search(int numeros[], int valor){
int i,j,m;
insertionsort_up(numeros);
i=0;
j=N-1;
while(i<=j){
m=(i+j)/2;
if(valor<numeros[m]) j=m-1;
else if(valor>numeros[m]) i=m+1;
else return m;
}
return -1;
}
Fin Tema 8b
Búsqueda y ordenación en arreglos

Más contenido relacionado

PPTX
Algoritmos para Ordenación, Búsqueda e Intercalación internas.pptx
PDF
Mètodos de Ordenaciòn y bùsqueda
PPTX
Ordenación y búsqueda orientada a C++
PDF
UNIDAD IV - metodos de busqueda
DOCX
Josemanueunidad4 investigacionmetodos
PPTX
Ordenacion y busqueda
PPTX
Metodos de ordenamiento
PDF
Reporte metodos de busqueda y ordenamiento
Algoritmos para Ordenación, Búsqueda e Intercalación internas.pptx
Mètodos de Ordenaciòn y bùsqueda
Ordenación y búsqueda orientada a C++
UNIDAD IV - metodos de busqueda
Josemanueunidad4 investigacionmetodos
Ordenacion y busqueda
Metodos de ordenamiento
Reporte metodos de busqueda y ordenamiento

Similar a 08b-Arreglos.ppt (20)

PPT
Unidad 1 1
PPTX
Metodos de ordenamiento
PDF
Arreglos programacion
PDF
Algoritmos II_2020.pdf
PDF
metodos-de-ordenamiento.pdf
PDF
Comparativa entre Algoritmos de Ordenamiento
PPTX
PPTX
PDF
Algoritmo, Ordenacion y Búsqueda
PPT
LinearSortOrderSatatistics.ppt
PPTX
Ordenacion y busqueda
PPTX
Programación Búsqueda Binaria y Método Burbuja
PDF
Tema 2 busqueda_ordenacion_grupo_21
PPTX
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
DOC
Metodo quicksort
DOCX
Informe insercion
PPTX
Estructura de Datos - Unidad 5 metodos de ordenamiento
PPTX
Presentacion recursividad
PPT
Algoritmos de OrdenyBusq PAvanz09 Sesion_2.ppt
Unidad 1 1
Metodos de ordenamiento
Arreglos programacion
Algoritmos II_2020.pdf
metodos-de-ordenamiento.pdf
Comparativa entre Algoritmos de Ordenamiento
Algoritmo, Ordenacion y Búsqueda
LinearSortOrderSatatistics.ppt
Ordenacion y busqueda
Programación Búsqueda Binaria y Método Burbuja
Tema 2 busqueda_ordenacion_grupo_21
MÉTODOS DE ORDENAMIENTO Y BUSQUEDA
Metodo quicksort
Informe insercion
Estructura de Datos - Unidad 5 metodos de ordenamiento
Presentacion recursividad
Algoritmos de OrdenyBusq PAvanz09 Sesion_2.ppt
Publicidad

Último (6)

PPTX
Conceptos basicos de Base de Datos y sus propiedades
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
sistemas de informacion.................
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
Conceptos basicos de Base de Datos y sus propiedades
AutoCAD Herramientas para el futuro, Juan Fandiño
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
sistemas de informacion.................
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Derechos_de_Autor_y_Creative_Commons.pptx
Publicidad

08b-Arreglos.ppt

  • 1. Tema 8b Búsqueda y ordenación en arreglos
  • 2. Ordenación • Es un proceso que altera el orden de los elementos de un conjunto. • Tiene asociada una relación de orden – Números: valor – Letras: alfabeto – Auto: ¿Velocidad? ¿Tamaño? ¿Autonomía? – Amigos: ¿…..? • La ordenación puede ser ascendente o descendente.
  • 3. Ordenación • Métodos – Burbuja (Bubble sort) – Selección – Inserción – Burbuja bidireccional – Rápido (Quicksort)
  • 4. Bubble sort • Los elementos más “pesados” “bajan” • Los elementos más “livianos” “suben” • Cuando ya no puede bajar más se sigue con el resto.
  • 5. Bubble sort r a c f b e i a 1-Como r es más “pesada” que a, r “baja” y a “sube” a r c f b e i a a c r f b e i a 2-Como r es más “pesada” que c, r “baja” y c “sube” a c f b e i a r …
  • 6. Bubble sort void bubblesort(int numeros[]){ int i,j; for(i=1;i<N;i++) for(j=0;j<(N-i);j++) if(numeros[j]>numeros[j+1]){ int aux = numeros[j+1]; numeros[j+1] = numeros[j]; numeros[j] = aux; } }
  • 7. Selección • Se selecciona el minimo valor entre los N elementos y se intercambia con el primero. • Se repite la operación con los N-1 elementos restantes.
  • 8. Selección void selectionsort_up(int numeros[]){ int i,j,k,r; int n; int inter; for(i=0;i<N-1;i++){ inter=0; k=i; n=numeros[i]; for(j=i+1;j<N;j++) if(numeros[j]<n){ r=j; n=numeros[j]; inter=1; } if(inter){ numeros[r] = numeros[i]; numeros[i] = n; } } }
  • 9. Inserción • Ordena el subarreglos de manera creciente • Ordena los primeros dos elementos • Luego va insertando los siguientes en su posición ordenada en el subarreglo.
  • 10. Inserción void insertionsort_up(int numeros[]){ int i,j; int n; for(i=1;i<N;i++){ n=numeros[i]; for(j=i-1; (j>=0)&&(n<numeros[j]) ;j--) numeros[j+1] = numeros[j]; numeros[j+1] = n; } }
  • 11. Quicksort • Los algoritmos anteriores ejecutan un numero de instrucción del orden de N2 – Ordenar 10 elementos ejecuta a100 instrucciones. – Ordenar 100 elementos ejecuta a10000 instrucciones. – Ordenar 1000 elementos ejecuta a1000000 instrucciones.
  • 13. Quicksort • Quicksort es un algoritmo de proposito general. • Es en la mayoria de los casos el más eficiente. • Tiene un orden a N log(N) • Tiene una estructura recursiva.
  • 15. Búsqueda • Consiste en buscar un elemento dentro de un conjunto • Requiere de una relación de igualdad – Números: Igual valor • ¿Cuántos decimales considerar? – Letras: mismo símbolo • ¿Mayusculas y minúsculas? – Autos • Modelo y año • Placa patente • Codigo chasis • Etc…
  • 17. Búsqueda secuencial • Recorrer uno por uno los elementos. • Comparar según sea el criterio. • Se puede querer recuperar el valor o ela posición. • Tiene un orden aN
  • 18. Búsqueda secuencial int secuencial_search(int numeros[], int valor){ int i=0; for(i=0;i<N;i++) if(numeros[i]==valor) return i; return -1; }
  • 19. Búsqueda secuencial • En arreglos bidimensionales el algortimo es similar. • Se puede hacer por filas o por columas. • Esta decision puede afectar el rendimiento – Por lo general, preferir por filas.
  • 20. Búsqueda secuencial int bisecuencial_search(int numeros[][N], int valor){ int i,j; for(i=0;i<N;i++) for(j=0;j<N;j++) if(numeros[i][j]==valor) return i*N+j; return -1; } … pos = bisecuencial_search(binumeros, 11); if(pos>=0) printf("bisec) numeros[%d][%d] = %dn", pos/N,pos%N, binumeros[pos/N][pos%N]);
  • 21. Búsqueda binaria • Muy rápida • Requiere datos ordenados • No sirve para recuperar la posición original. • “Encierra” el numero búscado “achicando” a la mitad el intervalo que parece contenerlo. • Tiene un orden alog2N
  • 22. Búsqueda binaria int binary_search(int numeros[], int valor){ int i,j,m; insertionsort_up(numeros); i=0; j=N-1; while(i<=j){ m=(i+j)/2; if(valor<numeros[m]) j=m-1; else if(valor>numeros[m]) i=m+1; else return m; } return -1; }
  • 23. Fin Tema 8b Búsqueda y ordenación en arreglos