Professional Documents
Culture Documents
1
Selección
Selección void selectionsort_up(int numeros[]){
int i,j,k,r;
int n;
int inter;
for(i=0;i<N-1;i++){
• Se selecciona el minimo valor entre los N inter=0;
elementos y se intercambia con el primero. k=i;
n=numeros[i];
for(j=i+1;j<N;j++)
• Se repite la operación con los N-1 if(numeros[j]<n){
elementos restantes. r=j;
n=numeros[j];
inter=1;
}
if(inter){
numeros[r] = numeros[i];
numeros[i] = n;
}
}
}
Inserción Inserción
void insertionsort_up(int numeros[]){
• Ordena el subarreglos de manera creciente int i,j;
int n;
• Ordena los primeros dos elementos for(i=1;i<N;i++){
n=numeros[i];
• Luego va insertando los siguientes en su for(j=i-1; (j>=0)&&(n<numeros[j]) ;j--)
posición ordenada en el subarreglo. numeros[j+1] = numeros[j];
numeros[j+1] = n;
}
}
Quicksort Quicksort
• Los algoritmos anteriores ejecutan un
Tiempo de ejecución
Nº de elementos
2
Quicksort Quicksort
• Quicksort es un algoritmo de proposito
Tiempo de ejecución
general.
• Es en la mayoria de los casos el más
eficiente.
• Tiene un orden α N log(N)
• Tiene una estructura recursiva.
αNlog(N)
Nº de elementos
Búsqueda Búsqueda
• Consiste en buscar un elemento dentro de un • Métodos
conjunto
– Secuencial
• Requiere de una relación de igualdad
– Números: Igual valor – Binaria
• ¿Cuántos decimales considerar?
– Letras: mismo símbolo
• ¿Mayusculas y minúsculas?
– Autos
• Modelo y año
• Placa patente
• Codigo chasis
• Etc…
3
Búsqueda secuencial Búsqueda secuencial
int bisecuencial_search(int numeros[][N], int valor){
• En arreglos bidimensionales el algortimo es
similar. int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
• Se puede hacer por filas o por columas. if(numeros[i][j]==valor) return i*N+j;
return -1;
• Esta decision puede afectar el rendimiento }
…
– Por lo general, preferir por filas. pos = bisecuencial_search(binumeros, 11);
if(pos>=0)
printf("bisec) numeros[%d][%d] = %d\n",
pos/N,pos%N,
binumeros[pos/N][pos%N]);
Fin Tema 8b