SlideServe
Menu
Préférences
© SlideServe · v2026

Tema 8b

tamyra avatar
23 diapositives · 391 Views · Oct 13, 2014

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: ¿…..?

Tema 8b - slide 1
01 / 23Tema 8b
1 / 17

Télécharger la présentation

Tema 8b
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  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. a r a a a c c r c r c f b f f f e b b b i e e e a i i i a a r a 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(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.

  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 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] = %d\n", 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