Está en la página 1de 14

ALGORITMOS Y PROGRAMACIÓN

ORDENAMIENTO Y BÚSQUEDA
BÚSQUEDA
❑ La búsqueda de datos, contenidos en cualquier dispositivo de
almacenamiento, constituye una acción inherente al uso de software
de aplicación.
❑ Al igual que para el ordenamiento, la búsqueda estará referida a datos
contenidos en un arreglo unidimensional y utilizando también la
definición
typedef int vector[30];

Búsqueda y Ordenamiento 2
BÚSQUEDA
SECUENCIAL
Este método opera sobre un arreglo no ordenado y consiste en
determinar la ubicación en la que se encuentra un valor buscado o la
inexistencia de esa ubicación si ese valor no se encuentra.
int posicion(vector v, int n, int k)
{ int i=0, pos=-1;
while(i<n && pos==-1)
{ if(v[i] == k)
pos = i;
i++;
}
return pos;
}

Búsqueda y Ordenamiento 3
BÚSQUEDA
BINARIA
Este método opera sobre un arreglo ordenado y consiste en comparar
un valor k con el elemento situado en la mitad del arreglo: si k es igual
al elemento medio, entonces finaliza la búsqueda; si k es mayor que el
elemento medio, entonces la búsqueda continúa en la mitad superior
del arreglo; y, si k es menor que el elemento medio, entonces la
búsqueda continúa en la mitad inferior del arreglo. Este proceso se
aplica recurrentemente hasta encontrar el valor k o determinar su
inexistencia.

Búsqueda y Ordenamiento 4
BÚSQUEDA
BINARIA
int posicion(vector v, int n, int k)
{ int i=0, j=n-1, pos;
do
{ pos = (i + j)/2;
if(v[pos] < k)
i = pos + 1;
else
if(v[pos] > k)
j = pos - 1;
else
return pos;
} while(i <= j);
return -1;
}
Búsqueda y Ordenamiento 5
ORDENAMIENTO
❑ Con el propósito de optimizar los procesos de búsqueda de datos se
hace necesario que estos se encuentren ordenados.
❑ El ordenamiento de datos no constituye un fin sino un medio para
reducir el tiempo destinado a su búsqueda.
❑ El ordenamiento es exigible a los datos contenidos en todos los medios
de almacenamiento.
❑ Los datos que residen en medios de almacenamiento externo (discos)
se conocen como datos persistentes (su existencia persiste más allá del
tiempo de ejecución del proceso que los crea).
❑ Los datos que residen en almacenamiento interno (RAM) se conocen
como transientes.

Búsqueda y Ordenamiento 6
ORDENAMIENTO
❑ El más destacable contenedor de datos residente en almacenamiento
interno es el arreglo unidimensional, razón por la cual hablar de
ordenamiento interno es hablar de ordenamiento de arreglos.
❑ Existe una gran variedad de métodos de ordenamiento de arreglos,
todos in situ (en el sitio, es decir, en el mismo arreglo), entre los cuales
se destacan los conocidos como métodos directos: selección, inserción
e intercambio.
❑ Para simplificar la descripción de los métodos se utilizará la definición
typedef int vector[30];

Búsqueda y Ordenamiento 7
ORDENAMIENTO
SELECCIÓN DIRECTA
Este método consiste en buscar el menor elemento en el arreglo y
ponerlo en primera posición. Luego se busca el segundo elemento más
pequeño del arreglo y se le pone en segunda posición. El proceso
continúa hasta que todos los elementos del arreglo estén ordenados.
Ejemplo: Aplicación del método sobre un vector v.
v: 7 2 1 6 8
1 2 7 6 8
1 2 7 6 8
1 2 6 7 8
1 2 6 7 8

Búsqueda y Ordenamiento 8
ORDENAMIENTO
SELECCIÓN DIRECTA
void seleccion(vector v, int n)
{ int i, j, aux, menor;
for (i=0; i<n-1; i++)
{ menor = i;
for(j=i+1; j<n; j++)
if(v[menor] > v[j])
menor = j;
if(i != menor)
{ aux =v[menor];
v[menor] = v[i];
v[i] = aux;
}
}
}
Búsqueda y Ordenamiento 9
ORDENAMIENTO
INSERCIÓN DIRECTA
Este método consiste en insertar un elemento del arreglo en la parte
izquierda del mismo la cual ya se encuentra ordenada. Este proceso se
repite desde el segundo hasta el n-ésimo elemento.
Ejemplo: Aplicación del método sobre un vector v.
v: 7 2 1 6 8
2 7 1 6 8
1 2 7 6 8
1 2 6 7 8
1 2 6 7 8

Búsqueda y Ordenamiento 10
ORDENAMIENTO
INSERCIÓN DIRECTA
void insercion(vector v, int n)
{ int i, j, aux;
for(i=1; i<n; i++)
{ aux = v[i];
for(j=i-1; j>=0 && v[j]>aux; j--)
v[j+1] = v[j];
v[j+1] = aux;
}
}

Búsqueda y Ordenamiento 11
ORDENAMIENTO
INTERCAMBIO DIRECTO (BURBUJA)
Este método consiste en comparar pares de elementos adyacentes e
intercambiarlos entre sí hasta que todos se encuentren ordenados. En
cada una de n-1 pasadas, se traslada el menor (o mayor) elemento a su
posición correcta. Concluidas las pasadas, los elementos del arreglo
estarán ordenados.
Ejemplo: Aplicación del método sobre un vector v.
v: 7 2 1 6 8
1 7 2 6 8
1 2 7 6 8
1 2 6 7 8
1 2 6 7 8

Búsqueda y Ordenamiento 12
ORDENAMIENTO
INTERCAMBIO DIRECTO (BURBUJA)
void intercambio(vector v, int n)
{ int i, j, aux;
for(i=0; i<n-1; i++)
for(j=n-1; j>i; j--)
{ if (v[j] < v[j-1])
{ aux = v[j];
v[j] = v[j-1];
v[j-1] = aux;
}
}
}

Búsqueda y Ordenamiento 13
ORDENAMIENTO

1) Implementar en un programa los métodos de


ordenamiento:

• Selección Directa
• Inserción Directa
• Intercambio Directo
2) Probar cada método con un arreglo de tamaño n con
datos generados aleatoriamente.
3) Implementar un menú de opciones para que el
usuario seleccione el método.

Búsqueda y Ordenamiento 14

También podría gustarte