Tema 8b - PowerPoint PPT Presentation

About This Presentation
Title:

Tema 8b

Description:

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? ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 24
Provided by: infU3
Category:
Tags: alfabeto | tema

less

Transcript and Presenter's Notes

Title: Tema 8b


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
1-Como r es más pesada que a, r baja y a
sube
2-Como r es más pesada que c, r baja y c
sube

6
Bubble sort
  • void bubblesort(int numeros)
  • int i,j
  • for(i1iltNi)
  • for(j0jlt(N-i)j)
  • if(numerosjgtnumerosj1)
  • int aux numerosj1
  • numerosj1 numerosj
  • numerosj 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(i0iltN-1i)
  • inter0
  • ki
  • nnumerosi
  • for(ji1jltNj)
  • if(numerosjltn)
  • rj
  • nnumerosj
  • inter1
  • if(inter)
  • numerosr numerosi
  • numerosi 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(i1iltNi)
  • nnumerosi
  • for(ji-1 (jgt0)(nltnumerosj) j--)
  • numerosj1 numerosj
  • numerosj1 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.

12
Quicksort
aN2
Tiempo de ejecución
Nº de elementos
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.

14
Quicksort
Tiempo de ejecución
aNlog(N)
Nº de elementos
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

16
Búsqueda
  • Métodos
  • Secuencial
  • Binaria

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 i0
  • for(i0iltNi)
  • if(numerosivalor) 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 numerosN, int
    valor)
  • int i,j
  • for(i0iltNi)
  • for(j0jltNj)
  • if(numerosijvalor) return iNj
  • return -1
  • pos bisecuencial_search(binumeros, 11)
  • if(posgt0)
  • printf("bisec) numerosdd d\n",
  • pos/N,posN,
  • binumerospos/NposN)

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)
  • i0
  • jN-1
  • while(iltj)
  • m(ij)/2
  • if(valorltnumerosm) jm-1
  • else if(valorgtnumerosm) im1
  • else return m
  • return -1

23
Fin Tema 8b
Búsqueda y ordenación en arreglos
Write a Comment
User Comments (0)
About PowerShow.com