tema 8b búsqueda y ordenación en arreglos. ordenación es un proceso que altera el orden de los...
TRANSCRIPT
![Page 1: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/1.jpg)
Tema 8b
Búsqueda y ordenación en arreglos
![Page 2: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/2.jpg)
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.
![Page 3: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/3.jpg)
Ordenación
• Métodos– Burbuja (Bubble sort)– Selección– Inserción– Burbuja bidireccional– Rápido (Quicksort)
![Page 4: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/4.jpg)
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.
![Page 5: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/5.jpg)
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
…
![Page 6: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/6.jpg)
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;
}}
![Page 7: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/7.jpg)
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.
![Page 8: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/8.jpg)
Selecciónvoid 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;
}}
}
![Page 9: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/9.jpg)
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.
![Page 10: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/10.jpg)
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;
}}
![Page 11: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/11.jpg)
Quicksort
• Los algoritmos anteriores ejecutan un numero de instrucción del orden de N2
– Ordenar 10 elementos ejecuta 100 instrucciones.
– Ordenar 100 elementos ejecuta 10000 instrucciones.
– Ordenar 1000 elementos ejecuta 1000000 instrucciones.
![Page 12: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/12.jpg)
Quicksort
Nº de elementos
Tie
mpo
de
ejec
ució
n
N2
![Page 13: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/13.jpg)
Quicksort
• Quicksort es un algoritmo de proposito general.
• Es en la mayoria de los casos el más eficiente.
• Tiene un orden N log(N)
• Tiene una estructura recursiva.
![Page 14: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/14.jpg)
Quicksort
Nº de elementos
Tie
mpo
de
ejec
ució
n
Nlog(N)
![Page 15: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/15.jpg)
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…
![Page 16: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/16.jpg)
Búsqueda
• Métodos– Secuencial– Binaria
![Page 17: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/17.jpg)
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 N
![Page 18: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/18.jpg)
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;
}
![Page 19: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/19.jpg)
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.
![Page 20: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/20.jpg)
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]);
![Page 21: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/21.jpg)
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 log2N
![Page 22: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/22.jpg)
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;
}
![Page 23: 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](https://reader035.vdocuments.co/reader035/viewer/2022062410/5665b4401a28abb57c9064d6/html5/thumbnails/23.jpg)
Fin Tema 8b
Búsqueda y ordenación en arreglos